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 ricci1324 ?        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/que1342 ?        S      0:00 ricci-modrpm1350 ?        D      0:05 /usr/bin/python /usr/bin/yum -y install cman rgmanage1363 ?        S<sl   0:00 modclusterd1437 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/vdbinitiator-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上运行

基于rhcs套件实现的高可用集群相关推荐

  1. 基于corosync+pacemaker实现主从高可用集群

    本实验由两个节点组成高可用主从集群,在实际中不常用,目的是通过实验来加深对corosync的认识和理解. 环境设置: node1:node1.magedu.com ip 172.16.14.10 no ...

  2. docker mysql 高可用_使用docker 基于pxc镜像搭建mysql高可用集群

    前置条件 docker已安装: 第一步:拉取镜像 docker pull percona/percona-xtradb-cluster:5.7.21 第二步:复制重命名镜像(可选) docker ta ...

  3. 基于Centos+Docker+Kubeadm的高可用集群设计

  4. 【K8SRockyLinux】基于开源操作系统搭建K8S高可用集群(详细版)

    文章目录 一.实验节点规划表

  5. nfs mysql_heatbeat-gui实现基于nfs的mysql高可用集群

    一.简述HA高可用集群 高可用集群就是当集群中的一个节点发生各种软硬件及人为故障时,集群中的其他节点能够自动接管故障节点的资源并向外提供服务.以实现减少业务中断时间,为用户提供更可靠,更高效的服务. ...

  6. 高可用集群技术之heartbeat应用详解(一)

    一.高可用集群基本概念   什么是高可用技术呢?在生产环境中我既要保证服务不间断的服务又要保证服务器稳定不down机,但是异常还是会发生,比如说:服务器硬件损坏...导致服务器down机,我该如何保证 ...

  7. HA高可用集群与RHCS集群套件

    一.HA基本概念 linux高可用集群(HA)原理详解:https://blog.csdn.net/xiaoyi23000/article/details/80163344 负载均衡.集群.高可用(H ...

  8. 运维企业专题(11)RHCS高可用集群下MySql数据库与共享磁盘(单点写入、多点写入)的设置

    实验环境 主机名 IP 服务 server1 172.25.6.1 ricci,luci, iscsi,mysql-server server2 172.25.6.2 ricci,iscsi,mysq ...

  9. linux集群管理平台,基于Linux平台的高可用集群管理系统的研究与实现

    摘要: 集群管理系统的高可用性是指其能够连续地对外提供服务,本文针对集群系统的高可用性,以开源的集群搭建和管理软件KUSU为基础,以集群管理节点的双机热备份技术理论为支撑,以实现集群系统的帮障检测与业 ...

最新文章

  1. pilt图像处理_Python用Pillow(PIL)进行简单的图像操作
  2. JavaScript代码检查工具——JSLintMate
  3. php多浏览器支持,测试网站在多个浏览器中的兼容性:MultiBrowser ┆V1.3.1 多国语言版...
  4. 响应式web(四):使用Netty作为web容器,基于注解的WebFlux阻塞式与响应式实现
  5. P8-DevOps中的CI/CD环境搭建与调优
  6. javascript --- typeof方法和instanceof方法
  7. Hibernate事实:始终检查Criteria API SQL查询
  8. Oracle 每个session的限制,限制oracle普通用户能且只能kill自己的会话
  9. 《SolidWorks 2013中文版机械设计从入门到精通》一2.6 几何关系
  10. [Unity] FlowCanvas 使用注意事项
  11. 删除重复行 oracle,Oracle删除重复行传智播客
  12. Vue-watch侦听器和计算属性
  13. Linux下原生异步IO接口Libaio的用法
  14. 金彩教育:提升产品标签的方法
  15. 谷歌网页加载特别慢的问题
  16. Pytho中list去除重复项
  17. Microsoft Remote Desktop提示「Your session was disconnected」
  18. 自己动手写一个网盘?
  19. 苹果cms后台路径怎么修改
  20. windows系统通过虚拟机安装linux

热门文章

  1. SVG绘制文字特效 html+css
  2. Spring cloud 和 Spring Boot 升级到F版和2.x遇到的问题。
  3. 3d地球散点图加路径lines3D的实现,带有散点即路径的立体地球
  4. wangyi3-数据挖掘研究员
  5. 【智能制造】一份不错的工厂自动化解决方案PPT!
  6. 自学C语言(14)循环语句总结(新)
  7. 电信增值短信平台模块清单(sp用)
  8. 使用百度翻译api支持中转英,中简转中繁等等
  9. qrcode生成二维码
  10. 用ansible自动化搭建web、sql服务器、lvs调度器