编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

HA服务器架构-基于CentOS7(服务器安装hadoop)

wxchong 2024-08-19 23:55:28 开源技术 13 ℃ 0 评论

linux文件夹含义

/bin - 重要的二进制 (binary) 应用程序
/boot - 启动 (boot) 配置文件
/dev - 设备 (device) 文件
/etc - 配置文件、启动脚本等 (etc)
/home - 本地用户主 (home) 目录
/lib - 系统库 (libraries) 文件
/lost+found - 在根 (/) 目录下提供一个遗失+查找(lost+found) 系统
/media - 挂载可移动介质 (media),诸如 CD、数码相机等
/mnt - 挂载 (mounted) 文件系统
/opt - 提供一个供可选的 (optional) 应用程序安装目录
/proc - 特殊的动态目录,用以维护系统信息和状态,包括当前运行中进程 (processes) 信息
/root - root (root) 用户主文件夹,读作“slash-root”
/sbin - 重要的系统二进制 (system binaries) 文件
/sys - 系统 (system) 文件
/tmp - 临时(temporary)文件
/usr - 包含绝大部分所有用户(users)都能访问的应用程序和文件
/var - 经常变化的(variable)文件,诸如日志或数据库等

centos7防火墙操作

  1. 永久打开一个80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent 
firewall-cmd --reload

  1. 启动一个服务:
systemctl start firewalld.service
  1. 关闭一个服务:
systemctl stop firewalld.service
  1. 重启一个服务:
systemctl restart firewalld.service
  1. 显示一个服务的状态:
systemctl status firewalld.service
  1. 在开机时启用一个服务:
systemctl enable firewalld.service
  1. 在开机时禁用一个服务:
systemctl disable firewalld.service
  1. 查看服务是否开机启动:
systemctl is-enabled firewalld.service
  1. 查看已启动的服务列表:
systemctl list-unit-files|grep enabled
  1. 查看启动失败的服务列表:
systemctl --failed

keeplieved

keeplieved的简介

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器

keepalievd安装

Keepalived:192.168.3.206 HA1
Keepalived:192.168.3.207 HA2
  1. 关闭selinux
### 查看
[root@dev-server ~]# getenforce
Disabled
[root@dev-server ~]# /usr/sbin/sestatus -v
SELinux status:                 disabled

### 临时关闭
##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
setenforce 0

###永久关闭
vim /etc/selinux/config

###SELINUX=enforcing改为SELINUX=disabled 

  1. 下载或者上传 压缩包 wget http://www.keepalived.org/software/keepalived-1.3.9.tar.gz
  2. 解压 &编译
tar -xzvf keepalived-1.3.9.tar.gz
#编译
cd keepalived-1.3.9/
./configure 
 make 
 make install
  1. 修改Master主机配置

vim /usr/local/etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     heyapenggz@163.com #管理员邮箱列表
   }
   notification_email_from root@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id HA1 #主机名
}

vrrp_instance VI_1 {
    state MASTER #角色
    interface ens33 #网卡编号
    virtual_router_id 51
    priority 100 #权重
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.210/24 #VIP
    }
}
  1. 修改BACKUP主机配置 vim /usr/local/etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     heyapenggz@163.com
   }
   notification_email_from root@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id NodeB
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.140/24
    }
}  

  1. 设置开机启动 Centos6
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ 
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived 
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ 
mkdir -p /etc/keepalived 
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf 
chmod +x /etc/init.d/keepalived 
chkconfig –add keepalived 
chkconfig keepalived on

Centos 7

mkdir -p /etc/keepalived/
cp  /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

systemctl enable keepalived.service

常见问题

  1. OpenSSL is not properly installed on your system.
  !!! OpenSSL is not properly installed on your system. !!!
  !!! Can not include OpenSSL headers files.            !!!

解决办法:

    yum -y install openssl-devel
  1. error: no acceptable C compiler found in $PATH
error: no acceptable C compiler found in $PATH

解决办法:

yum install gcc

Mysql双主双复制集群

mysql安装

1.删除系统自带数据库

yum remove mariadb*

  1. 安装mysql5.6
rpm -ivh MySQL-server-5.6.21-1.el6.x86_64.rpm
  1. 设置开机启动 并启动mysql
chkconfig mysql on

service mysql start
  1. 登录root账户并修改root密码
cat /root/.mysql_secret

mysql -u root -p
set password =PASSWORD('eshu2017');

  1. 配置共同账户
CREATE USER 'ha'@'%' IDENTIFIED BY 'eshu2017'; 
GRANT ALL ON *.* TO 'ha'@'%'; 
flush privileges;

  1. 配置HA1主服务器
server-id = 1
log-bin=mysql-bin 
binlog-do-db = ha
binlog-ignore-db = mysql
#主-主形式需要多添加的部分
log-slave-updates
sync_binlog = 1
auto_increment_offset = 1
auto_increment_increment = 2
replicate-do-db = ha
replicate-ignore-db = mysql,information_schema
  1. 配置HA2主服务器
server-id = 2
log-bin=mysql-bin 
replicate-do-db = ha
replicate-ignore-db = mysql,information_schema,performance_schema
      
#主-主形式需要多添加的部分
binlog-do-db = ha
binlog-ignore-db = mysql
log-slave-updates
sync_binlog = 1
auto_increment_offset = 2
auto_increment_increment = 2

8.重启两台服务器 并配置复制账户

  • 修改HOSTS
vim /etc/hosts

  • 在HA1 mysql上运行
grant replication slave on *.* to 'replicate'@'HA2' identified by 'eshu2017';

  • 在HA2 mysql上运行
grant replication slave on *.* to 'replicate'@'HA1' identified by 'eshu2017';

  • 配置复制(分别配置为另一台服务器的slave)
show master status;  #记录下来file   Position 两个值供子节点的 master_log_file =  master_log_pos= 使用

stop SLAVE       
change  master to master_host='192.168.3.207',master_user='ha',master_password='eshu2017',master_log_file='mysql-bin.000001',master_log_pos=817;  
start slave

fastDFS

下载

包含两部分 一部分为lib 一部分为fastDFS

https://github.com/happyfish100/libfastcommon/releases

	
https://github.com/happyfish100/fastdfs/releases

安装

  1. 安装lib
tar xf libfastcommon-1.0.7.tar.gz
cd libfastcommon-1.0.7
./make.sh
./make.sh install

  1. 安装fastDFS
tar xf fastdfs-5.09.tar.gz
cd fastdfs-5.09
./make.sh
./make.sh install

3.配置

  • 配置文件路径
cd /etc/fdfs
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

  • tracker节点配置 tracker.conf
#绑定IP
bind_addr=
#端口
port=22122
#连接超时时间
connect_timeout=30
#日志数据路径
base_path=/data/fdfs_tracker
#上传文件时选择group的方法
#0:轮询,1:指定组,2:选择剩余空间最大
store_lookup=2
#如果上面的配置是1,那么这里必须指定组名
store_group=group2
#上传文件时选择server的方法
#0:轮询,1:按IP地址排序,2:通过权重排序
store_server=0
#storage上预留空间
reserved_storage_space = 10%

  • storage节点 storage.conf
#storage server所属组名
group_name=group1
#绑定IP
bind_addr=
#storage server的端口
port=23000
#连接超时时间
connect_timeout=30
#日志数据路径
base_path=/data/fdfs_storage/base
#storage path的个数
store_path_count=2
#根据store_path_count的值,就要有storage0到storage(N-1)个
store_path0=/data/fdfs_storage/storage0
store_path1=/data/fdfs_storage/storage1
#跟踪服务器
tracker_server=192.168.1.222:22122
tracker_server=192.168.1.233:22122


  • 创建文件夹
mkdir -p /data/fdfs_storage/base
mkdir -p /data/fdfs_storage/storage0
mkdir -p /data/fdfs_storage/storage1
mkdir -p /data/client

  • 打开防火墙端口
firewall-cmd --zone=public --add-port=22122/tcp --permanent 
firewall-cmd --zone=public --add-port=23000/tcp --permanent 

  • 配置客户端
cd /etc/fdfs
cp client.conf.sample client.conf
vi client.conf
#存放日志目录
base_path=/data/client
#跟踪服务器
tracker_server=192.168.1.222:22122
tracker_server=192.168.1.233:22122

启动服务并设置开机启动

systemctl start fdfs_trackerd.service
systemctl start fdfs_storaged.service

systemctl enable fdfs_storaged.service
systemctl enable fdfs_trackerd.service

测试

  1. 文件上传
echo "12345678" >> /data/1.txt
fdfs_upload_file /etc/fdfs/client.conf /data/1.txt
  1. 文件下载
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt
  1. 追加
echo "hello" >> /data/2.txt
fdfs_upload_appender /etc/fdfs/client.conf /data/1.txt
fdfs_append_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3bxCEAcqhAAAAAIk0NhY869.txt /data/2.txt

  1. 删除
fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt

  1. 查看文件信息
fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt
  1. 查看集群
fdfs_monitor /etc/fdfs/client.conf

  1. 常用命令
fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file



两台服务器,各启动三个实例,形成三主三从

实验机器IP: 192.168.3.206 192.168.3.207

系统环境:centos 7

1、安装所需环境和工具

yum -y install wget vim tcl gcc make

2、下载redis 压缩包并解压

cd /usr/local/
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
tar -zxvf redis-4.0.1.tar.gz

3、编译redis源文件

cd redis-4.0.1
make & make install

# 测试:make test

(如果 /usr/local/bin/ 文件夹内没有 redis-server 那几个文件,就从 /usr/local/redis-4.0.1/src/ 中拷贝过去,命令:cp redis-server redis-cli redis-sentinel redis-benchmark redis-check-aof redis-check-rdb /usr/local/bin/)

4、配置内核参数

配置 vm.overcommit_memory 为1,这可以避免数据被截断

sysctl -w vm.overcommit_memory=1

5、创建多实例的文件夹,用来存放不同实例的配置文件

cd /usr/local/
mkdir cluster
cd cluster
mkdir 7000 7001 7002

6、修改配置文件

vim /usr/local/redis-4.0.1/redis.conf

bind 192.168.2.247(需要不同服务器的节点连通,就不能设置为 127.0.0.1)
protected-mode no(需要不同服务器的节点连通,这个就要设置为 no)
daemonize yes(设置后台运行redis)
cluster-enabled yes
cluster-node-timeout 5000
appendonly yes

# 根据不同端口需要设置的地方
port 7000
pidfile /var/run/redis_7000.pid
logfile /var/log/redis/redis_7000.log
dbfilename dump_7000.rdb
appendfilename "appendonly_7000.aof"
cluster-config-file nodes_7000.conf

7、复制配置文件到各个实例文件夹,并修改相应端口号和参数

cp -f /soft/redis-4.0.1/redis.conf /usr/local/cluster/7000/
cp -f /soft/redis-4.0.1/redis.conf /usr/local/cluster/7001/
cp -f /soft/redis-4.0.1/redis.conf /usr/local/cluster/7002/

mkdir /var/log/redis/

8、启动各个实例

cd /usr/local/redis-4.0.1/src/
./redis-server /usr/local/cluster/7000/redis.conf &
./redis-server /usr/local/cluster/7001/redis.conf &
./redis-server /usr/local/cluster/7002/redis.conf &

使用 ps -ef|grep redis 查看是否都启动成功,IP和端口号都正确

9、防火墙开通端口号策略(这里用centos7默认的firewall-cmd)

firewall-cmd --zone=public --add-port=7000-7002/tcp --permanent
firewall-cmd --zone=public --add-port=17000-17002/tcp

--permanent(必须开集群总线端口,集群总线端口=端口号+10000,例:7000的集群总线端口是17000。这个集群总线端口不开放,集群的时候外部服务器的节点添加不进来)

firewall-cmd --reload

#彻底关闭防火墙

systemctl stop firewalld.service 
systemctl disable firewalld.service

================================================================================== ====================== 1~9都是要在两台服务器中操作的 =========================== ==================================================================================

10、测试两台服务器是否都能 telnet 得通另一台的 7000~7002 和 17000~17002

yum isntall telnet -y

telnet 192.168.3.206 7000

11、安装 ruby 环境

yum -y install ruby rubygems

12、更新gem源,国外的会被墙,所以换一个国内的

gem sources --remove https://rubygems.org/ --remove https://ruby.taobao.org/ -a https://gems.ruby-china.org
gem source -l

gem cleanup
gem list

13、使用gem安装 redis和 ruby接口

gem install redis (或 gem install redis --version 4.0.1)

14、创建集群


cd /usr/local/redis-4.0.1/src/
./redis-trib.rb create --replicas 1 192.168.3.206:7000  192.168.3.206:7001 192.168.3.206:7002 192.168.3.207:7000  192.168.3.207:7001 192.168.3.207:7002
  • 留意屏幕,会有一句(type 'yes' to accept),输入 yes ,回车,就是接受自动分配的三主三从 如果最后出现
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

说明成功了。

如果是出现 Waiting for the cluster to join........... 一直有 “.”出现,说明另一台服务器的端口策略没通,一直在等那边的节点加入集群,那么恭喜你,要悲剧了.....

15、验证集群节点数

cd /usr/local/redis-4.0.1/src/
./redis-cli -h 192.168.2.247 -c -p 7000

CLUSTER NOTES

设置密码

如果集群要设置密码,集群启动后要在各个节点下设置:

config set masterauth abc
config set requirepass abc
config rewrite

16、常见问题

redis requires Ruby version >= 2.2.2






gem install redis

其中 gem install redis命令执行时出现了:

 redis requires Ruby version >= 2.2.2的报错,查了资料发现是Centos默认支持ruby到2.0.0,可gem 安装redis需要最低是2.2.2

解决办法是 先安装rvm,再把ruby版本提升至2.3.3

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
    curl -L get.rvm.io | bash -s stable
    find / -name rvm -print
    
    
    
    source /usr/local/rvm/scripts/rvm
    
      rvm list known
      
      rvm install 2.3.3
      rvm use 2.3.3
      rvm use 2.3.3 --default
      rvm remove 2.0.0
      ruby --version
 

snmp安装

snmp简介

snmp安装

yum install -y net-snmp

yum install -y net-snmp-devel

yum install -y net-snmp-libs



配置

  1. 修改配置文件

/etc/snmp/snmpd.conf/etc/snmp/snmpd.conf

  1. 配置防火墙
firewall-cmd --zone=public --add-port=161/udp --permanent

  1. 配置开机启动

nginx 及 FastDfs-nginx-modle

安装

分别解压两个文件包

tar -xzvf nginx-1.12.2.tar.gz 
tar -xzvf fastdfs-nginx-module_v1.16.tar.gz 


修改

vim /home/data/bin/fastdfs-nginx-module/src/config
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
#去掉local

编译


cd  nginx-1.12.2/
./configure --add-module=../fastdfs-nginx-module/src
make 
make install

配置插件

cd /home/data/bin/fastdfs-nginx-module/src vim mod_fastdfs.conf

tracker_server=192.168.3.206:22122
url_have_group_name = true

store_path_count=2
store_path0=/data/fdfs_storage/storage0
store_path1=/data/fdfs_storage/storage1


复制fastdfs文件

cp mod_fastdfs.conf /etc/fdfs

cd /home/data/bin/fastdfs-5.11/conf
cp anti-steal.jpg http.conf mime.types /etc/fdfs/

配置nginx

vim /usr/local/nginx/conf/nginx.conf

在web中增加配置

location /group1/M00 {
    ngx_fastdfs_module;
}



启动

/usr/local/nginx/sbin/nginx

注意

在已经安装过 Nginx 的服务器上安装配置 fastdfs-nginx-module 模块?我们直接进入 Nginx 的存放目录,进行配置后编译,就不需要执行最后安装make install这一步了,接着重启就行了。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表