基于rhcs套件实现的高可用集群

1.基于rhcs套件实现nginx平台的高可用集群

实验环境:
1> server1 server5 集群节点为了节省节点我们还用了server1作为管理节点安装了luci图形管理;
2> 配置好两个节点的yum源;
3> 设置域名解析物理机也要设置相同的解析
4> nginx在两个节点上都要安装server1 和 server5上相同的配置
5> 我们实现了nginx的负载均衡设置两台web服务器
解析如下:

vim /etc/hosts
server1 172.25.30.1
server5 172.25.30.5
172.25.30.100 www.westos.org #VIP域名解析

server1作为主管理节点:

conga —->luci(图形管理)—–(ricci;ricci)
Conga — 这是一个用于安装、配置和管理 Red Hat 高可用性附加组件的综合用户界面

yum install luci ricci -y
passwd ricci #设用节点用户密码
chkconfig ricci on #设置开机自启否则添加节点后重启nginx就会一直转打不开
/etc/init.d/ricci start
chkconfig luci on 
/etc/init.d/luci start #开机自启图形管理界面

server5:节点2

yum install ricci -y
passwd ricci
chkconfig ricci on
/etc/init.d/ricci start


进入图形管理界面登陆部署:
在物理测试机访问https://172.25.30.1:8084#luci自动开启8084端口

登陆server1 系统用户便于管理如果是普通用户登陆需要被赋予权限

Nodes #节点

点击 create 创建用户和节点:

创建成功:

Download Packages #安装yum源中的包并更新
Use Locally Installed Packages #使用本地安装的包
Reboot Nodes Before Joining Cluster #在cluster中添加节点后重启
Enable Shared Storage Support #支持共享磁盘
failover <故障恢复>失效备援
(为系统备援能力的一种,当系统中其中一项设备失效而无法运作时,另一项设备即可自动接手原失效系统所执行的工作)

Prioritized 权重,哪个做master,哪个做备用机,数字越小,优先级越高,1,2/10/3都行,数字无所谓
Restricted 服务器上只运行此服务
No Failback 不做切换(server1挂了,server4上,server1又好了,server1不抢master地位),这个主要是对性能差不多的服务器来说可以不选,如果server1和server5性能一样,那么就无序切换,切换浪费资源

Resource
VIP ——>172.25.30.100/24
Scripts—–>nginx—->/etc/init.d/nginx

Service group
集群中添加节点实现高可用;添加资源实现nginx平台的高可用
添加资源:VIP实现nginx负载均衡,scripts添加nginx服务
1> 给集群命名nginx

2> 添加VIP到集群组中:

3> 添加Scripts到集群组中:

4> 结果:

设置完成提交所有的设置部署都在/etc/cluster/cluster.conf中
添加重启过程中会发现server1 server5 正在安装需要安装的包

 ps -ax #在创建添加集群节点之后节点会自动在安装
 1242 ?        S<s    0:00 ricci -u ricci
 1324 ?        Sl     0:01 /usr/bin/python -Es /usr/bin/paster serve --daemon --
 1341 ?        S<s    0:00 /usr/libexec/ricci/ricci-worker -f /var/lib/ricci/que
 1342 ?        S      0:00 ricci-modrpm
 1350 ?        D      0:05 /usr/bin/python /usr/bin/yum -y install cman rgmanage
 1363 ?        S<sl   0:00 modclusterd
 1437 pts/0    R+     0:00 ps -ax

这里要保证有路径下的脚本,执行脚本服务开启则证明脚本正确
我们可以从网上下载脚本放到指定路径下面两个节点都要有相同的nginx部署

cd /etc/init.d/
ls
vim nginx #编辑nginx脚本
chmod 775 /etc/init.d/nginx 
ls
chkconfig --add nginx 
service nginx start
scp -r /usr/local/nginx/ server4:/usr/local
scp /etc/init.d/nginx server4:/etc/init.d/


clustat 查看节点状态是否将nginx加入集群节点中

开启服务访问nginx查看是否实现基于nginx负载均衡的高可用集群


访问VIP实现负载均衡:后台web服务器httpd服务打开
在物理机上访问172.25.30.1 访问nginx界面
访问www.westos.org 访问是否实现负载均衡
不能直接访问vip因为他会直接奔着节点服务器从而访问就是ngnx服务器我们要实现的是负载均衡所以直接访问VIP域名
在物理机添加vip 解析172.25.30.100 www.westos.org


当server1主节点挂掉还能实现负载均衡server4节点接替server1的工作实现nginx平台的集群高可用当集群服务开启时VIP就会绑定在主节点上

当主节点nginx服务挂掉让我们查看一下节点状态:

我们发现当节点1服务挂掉时查看节点状态需要刷新一会儿才能把服务转到另一个节点上这个时候会出现数据的丢失如果这个时节点一只是服务器出现了卡机状态而服务已经由server5节点来顶替server1又恢复了原来的服务这个时候平台数据就会出现脑裂现象谁撑的时间久就会用谁的数据我们希望当主服务器卡机时我们可以让他直接down掉这样就保证了集群的稳定运行。
什么是脑裂?

脑裂(split-brain),指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。

如何避免脑裂现象?

当不能确定某个节点的状态时,通过fencing把对方干掉,确保共享资源被完全释放,前提是必须要有可靠的fence设备。
理想的情况下,以上两者一个都不能少。
但是,如果节点没有使用共享资源,比如基于主从复制的数据库HA,我们也可以安全的省掉fence设备,只保留仲裁。而且很多时候我们的环境里也没有可用的fence设备,比如在云主机里。

yum install fence-virtd fence-virtd-multicast.x86_64 fence-virtd-libvirt.x86_64 -y
mkdir /etc/cluster
cd /etc/cluster
systemctl restart fence_virtd.service
fence_virtd -c

Module search path [/usr/lib64/fence-virt]:
Available backends:
libvirt 0.1
Available listeners:
multicast 1.2
Listener module [multicast]: multicast
Multicast IP Address [225.0.0.12]: 255.0.0.12
Multicast IP Port [1229]: 1229
Interface [virbr0]: br0
Key File [/etc/cluster/fence_xvm.key]: /etc/cluster/fence_xvm.key
Backend module [libvirt]: libvirt
Configuration complete.

=== Begin Configuration ===
backends {
    libvirt {
        uri = "qemu:///system";
    }
}
listeners {
    multicast {
        port = "1229";
        family = "ipv4";
        interface = "br0";
        address = "255.0.0.12";
        key_file = "/etc/cluster/fence_xvm.key";
    }
}
fence_virtd {
    module_path = "/usr/lib64/fence-virt";
    backend = "libvirt";
    listener = "multicast";
}
=== End Configuration ===
Replace /etc/fence_virt.conf with the above [y/N]? y


生成fence密钥:

mkdir /etc/cluster
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key
bs=128 count=1
file /etc/cluster/fence_xvm.key #查看密钥类型
systemctl restart fence_virtd.service
scp fence_xvm.key 172.25.30.1:/etc/cluster/
root@172.25.30.1's password: 
fence_xvm.key                                 100%  128     0.1KB/s   00:00    
 scp fence_xvm.key 172.25.30.5:/etc/cluster/
root@172.25.30.5's password: 
fence_xvm.key                                 100%  128     0.1KB/s   00:00 



添加fence:

配置节点fence
server1 fencevm1
Demain: server1的UUID

server5 fencevm2
Demain:server5的UUID

Clustat
Server1:测试节点脚本是否能够运行

 /etc/init.d/nginx stop
/etc/init.d/nginx start
clusvcadm -e nginx
clustat
nginx
vim /etc/cluster/cluster.conf 
ping 172.25.30.100
cd /etc/cluster/
fence_node server5

节点可以指定节点断电: fence_node server5

2.基于rhcs套件实现存储设备的的高可用集群:

1.本地存储的高可用集群

集群图形管理界面:
clusvcadm -d nginx #关闭nginx用命令来关闭server5中的nginx避免浪费资源(删除浏览器中的nginx脚本和集群)
添加源到mysql集群
VIP —->IP_ADDRESS
Filesystem—–>ext4(mysqldate)挂载点/var/lib/mysql
;UUID—>/dev/clustervg/demo

Scripts——>mysqld(mysqld—>路径—>/etc/init.d/mysqld) #脚本不用写目录下有


添加到资源组:



Server2 存储端:

yum install scsi-* -y
vim /etc/tgt/targets.conf 
<target iqn.2018-08.com.example:server.target1>
    backing-store /dev/vdb
    initiator-address 172.25.30.1 
    initiator-address 172.25.30.5
</target>
/etc/init.d/tgtd start #重启服务
chkconfig tgtd on #设置开机自启
tgt-admin -s 查看信息
这个路径是重点Backing store path: /dev/vdb


集群节点安装客户端软件
Server1:

yum install -y iscsi-*
iscsiadm -m discovery -t st -p 172.25.30.2 
iscsiadm -m node -l #登陆服务端
cat /proc/partitions #查看系统分区
fdisk -l #会发现/dev/sda这是服务端中iscsi的物理分区
Server5:
yum install -y iscsi-*
iscsiadm -m discovery -t st -p 172.25.30.2
iscsiadm -m node -l


Server1启动clvmd

#这个管理软件只有server1有,只在这上面安装了套件当然在登入服务端的客户端都可以在登陆scsi主机之后对服务端进行操作但是在节点集群中为了方便管理只在节点管理端安装了套件,因此我们所有的操作都在server1上进行,但是在server5上也可以看到新建的存储设备
/etc/init.d/clvmd status
/etc/init.d/clvmd start


创建lvm逻辑卷

lvs
pvcreate /dev/sda #创建物理卷
vgcreate clustervg /dev/sda #创建逻辑卷组clustervg
lvcreate -L 4G -n demo clustervg #在逻辑卷组中创建一个4G的逻辑卷demo
mkfs.ext4 /dev/clustervg/demo  #格式化demo,ext4是本地文件系统

可以在server5上同步但是另外一个节点必须要用pvs,vgs,lvs查看,同步刷新,多刷新几次我们发现这个并不能立即同步更新的分区信息存在一定的延时,因此我们要来学习一种新的方法两个节点可以同时挂载立即同步当主节点坏掉了另一个还能继续顶替他主节点还可以指定其他节点来顶替他的工作从而实现了节点集群的高可用,这里是因为集群节点之间存在心跳他们之间是存在彼此感应的。

配置mysql:
Server1:
挂载测试两端都要进行测试

yum install mysql  mysql-server -y
mount /dev/clustervg/demo  /var/lib/mysql/
chown mysql.mysql /var/lib/mysql/
df
/etc/init.d/mysqld start #启动数据库不要在数据库目录启动,否则看不到数据库文件/etc/init.d/mysqld stop
umount /var/lib/mysql/
Server5:
yum install -y mysql-server  
挂载查看
mount /dev/clustervg/demo /var/lib/mysql/
/etc/init.d/mysqld start
/etc/init.d/mysqld stop
umount /var/lib/mysql/


Server1扩大本地文件系统在server4上刷新查看

cd /var/lib/mysql/
ls
clustat #查看节点工作状态
lvextend  -L +1023 -n demo clustervg#扩大设备1023个PE减少冗余
Server4 上面刷新先卸载再挂载
resize2fs /dev/clustervg/demo 扩大文件系统


扩大文件系统:


ext4文件系统存在一定的局限性他只能对本地的存储设备进行管理,ext4文件系统有缺陷ext4文件系统是本地文件系统,向一个节点写东西时不能立即同步到另一个节点,而且可以会发生脑裂

2.gfs2 文件系统的高可用集群

集群图形管理界面:
VIP —->IP_ADDRESS(172.25.30.100/24和节点子网掩码保持一致)
删除文件系统需要先在集群群组中删除才能在源中删除
Filesystem—–>ext4(mysqldate)挂载点/var/lib/mysql ;UUID—>/dev/clustervg/demo
Scripts——>mysqld(mysqld—>路径—>/etc/init.d/mysqld) #脚本不用写目录下有
clusvcadm -d mysqld 可以在浏览器进行
浏览器删除文件系统(在service group里面点进去集群删除,然后直接删除资源里面的文件系统)

/etc/init.d/mysqld stop
umount /var/lib/mysql/
lvremove /dev/clustervg/demo #在逻辑卷组中删除demo逻辑卷
修改文件系统
mkfs.gfs2 -j 3 -p lock_dlm -t wei:mygfs2 
-j 日志数,集群节点数+1
-p 锁文件(只有数据库开启才会有,数据库stop就会消失)
-t 集群名:自定义命名
lvcreate -L 4G -n demo clustervg
mkfs.gfs2 -j 3 -p lock_dlm -t wei:mygfs2 /dev/clustervg/demo
mount /dev/clustervg/demo /var/lib/mysql/
chown mysql.mysql  /var/lib/mysql/ 
/etc/init.d/mysqld start
clusvcadm -e mysql #命令设置开机自启
gfs2_tool sb /dev/clustervg/demo all 
gfs2_tool journals /dev/clustervg/demo
df  -h #设备内存是由日志占用了




设备内存是由日志占用了

设置开机自动挂载

vim /etc/fstab #设置开机自动挂载,则每次开机过程中服务端存储设备的iscsi要开启这样节点才能登陆挂载
/dev/clustervg/demo     /var/lib/mysql          gfs2    _netdev         0 0
df
umount /var/lib/mysql/
mount -a


clusvcadm -r mysql -m server5 #指定mysql服务在server5上运行

猜你喜欢

转载自blog.csdn.net/dreamer_xixixi/article/details/81383971