1. 服务简介

Ricci: ricci是安装在每个后端的每个节点上的,且监听在11111上,luci管理集群上的各个节点就是通过和节点上的ricci进行通信

Luci:luci是用来配置和管理集群,监听在8084上

Fence:

(1).作用:在HA集群坏境中,备用服务器B通过心跳线来发送数据包来看主服务器A是否还活着,主服务器A接收了大量的客户端访问请求,服务器A的CPU负载达到100%响应不过来了,资源已经耗尽,没有办法回复服务器B数据包时,(回复数据包会延迟),服务器B认为服务器A已经挂了,于是备用服务器B把资源夺过来,自己做主服务器,过了一段时间服务器A响应过来了,服务器A觉得自己是老大,服务器B觉得自己也是老大,他们两个就挣着抢夺资源,集群资源被多个节点占有,两个服务器同时向资源写数据,破坏了资源的安全性和一致性,这种情况的发生叫做“脑裂”。服务器A负载过重,响应不过来了,有了Fence机制,Fence会自动的把服务器A给kill掉,以阻止“脑裂”的发生。

(2).原理:当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。

(3).类型:硬件Fence:电源Fence,通过关掉电源来踢掉坏的服务器 软件Fence:Fence卡(智能卡),通过线缆、软件来踢掉坏的服务器 。

2.环境配置:
服务端1:server1 172.25.26.1
服务端2:server2 172.25.26.2
(1)server1和server2配置yum源

vim /etc/yum.repos.d/rhel-source.repo
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.26.250/rhel6.5/HighAvailability
gpgcheck=0[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.26.250/rhel6.5/LoadBalancer
gpgcheck=0[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.26.250/rhel6.5/ResilientStorage
gpgcheck=0[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.26.250/rhel6.5/ScalableFileSystem
gpgcheck=0

(2)server1安装ricci和luci,并启动和设置开机自启,并设置ricci密码

 yum install -y ricci luci/etc/init.d/ricci start/etc/init.d/luci start  ##开启服务chkconfig ricci onchkconfig luci on       ##开机自启passwd ricci          ##设置用户密码netstat -tnlp           ##查看端口


(3)server2安装ricci并设置密码(server1和server2的密码要相同)

 yum install -y ricci/etc/init.d/ricci startchkconfig ricci onchkconfig --list       ##查看开机自启名单passwd ricci

(4)物理登陆配置:
https://172.25.41.1:8084

这里使用server1和server2设置的密码



cman         集群管理器
rgmanager       资源管理器
ricci           集群服务
modclusterd     配置文件修改服务
clvmd           集群逻辑卷服务

(5)server1或server2查看效果

clustat
cat /etc/cluster/cluster.conf



3.fence监控
(1)主机安装fence监控模块

rpm -qa| grep fence                          ##查看fence服务的安装包
yum install fence-virtd-multicast.x86_64 fence-virtd-libvirt.x86_64 fence-virtd.x86_64 -y
mkdir /etc/cluster/                         ##创建密码生成目录
fence_virtd -c                              ##网卡选择br0(与两个虚拟机连接的网卡)
ls /etc/cluster/
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1##如果未生成的密钥的话,自行创建
systemctl start fence_virtd.service         ##开启fence服务
scp fence_xvm.key 172.25.26.2:/etc/cluster/ ##将密码传给server1和2
scp fence_xvm.key 172.25.26.1:/etc/cluster/
netstat -autnlp | grep fence_virtd          ##查看服务端口





(2)浏览器的luci页面配置fence
添加fence设备

为server1和server2添加fence服务


因为这里要用序列区分fence,所以我们用虚拟机的UUID(不会重复)

server2



server1或server2测试

server1:fence_node server2
server2:fence_node server1


4.失败回切(一个服务器崩溃后,由另一个服务器来接管)
这里我们用apache服务作为失败回切服务来测试

添加失败回切服务

添加apache服务,设置ip地址和网络位,并设置ip转跳时间

将apache服务和失败回切放入同一个集群



效果

为server1和server2安装httpd,并配置默认页


开启集群服务,查看效果



如果开启出错,则去查看webfile优先级是否设置成功(越小越优先),如未设置,则设置好之后再去开启apache集群服务

开启服务查看效果

在server1中输入echo c> /proc/sysrq-trigger(将内核搞崩溃)

然后等待五秒后在server2中查看是否回切

5.ricci的命令行指令(不使用luci控制页面)

clusvcadm -e apache                      ##开启集群服务
clusvcadm -r apache -m server2          ##更改集群服务所在服务器
clusvcadm -d apache                     ##关闭集群服务



6.共享存储分区管理iscsi(只支持单点写入)
server3:172.25.26.3(作为iscsi共享分区的服务器)
sercver1和server3作为共享分区的两个客户端
(1)环境配置
server3:
物理机上为server3加一块作为共享的硬盘

重启生效

yum install -y scsi-*
fdisk -l
vim /etc/tgt/targets.conf
<target iqn.2019-04.com.example:server.target1>backing-store /dev/vda
</target>
/etc/init.d/tgtd start
ps ax


server1

yum install -y iscsi-*                       ##安装服务
iscsiadm -m discovery -t st -p 172.25.41.3  ##查看server3中的共享设备
iscsiadm -m node -l                         ##将共享server3共享设备
fdisk -l                                    ##查看是否共享成功
yum install -y mysql-server                 ##安装mysql
mount /dev/sdb /var/lib/mysql/              ##由于文件类型的问题,无法挂载
mkfs.ext4 /dev/sdb                          ##格式化文件
mount /dev/sdb /var/lib/mysql/              ##重新挂载ll -d /var/lib/mysql/                     ##查看mysql文件夹的权限
chown mysql.mysql /var/lib/mysql/
ll -d /var/lib/mysql/
/etc/init.d/mysqld start                    ##开启mysql
cd /var/lib/mysql/
ls                                          ##查看mysql服务是否生成了默认文件,由于mysql挂载了共享设备,默认文件也就放入了共享设备中
/etc/init.d/mysqld stop
umount /var/lib/mysql/                      ##卸载,并停止mysql



server2

yum install -y iscsi-*
iscsiadm -m discovery -t st -p 172.25.41.3
iscsiadm -m node -l
fdisk -l
yum install -y mysql-server

主机在浏览器的luci页面上配置mysql集群服务(基于iscsi)
设置sql的ip

设置启动文件

设置自动挂载服务

设置回切服务

为集群服务添加规则


开启sql集群服务


server1测试查看

clustat
df


由于server2未格式化设备所以集群服务无法运行在server2上
由于iscsi只支持单点写入server1在共享设备所挂载的目录中新建文件不能同步到server2中


7.共享存储分区管理GSF2(只支持多点写入)
server1环境配置:

yum install -y lvm2-cluster-2.02.100-8.el6.x86_64
/etc/init.d/clvmd start

此功能必须开启clvmd服务

lvmconf --enable-cluster     ##设置lvm的开机自启
vim /etc/lvm/lvm.conf           ##查看是否设置成功,(是否变为3)


创建lvm分区并格式化

pvcreate /dev/sdb
pvs
vgcreate clustervg /dev/sdb
vgs
lvcreate -L 4G -n demo clustervg
lvs
mkfs.ext4 /dev/clustervg/demo

mount /dev/clustervg/demo /var/lib/mysql/
ll -d /var/lib/mysql/
chown mysql.mysql /var/lib/mysql/
ll -d /var/lib/mysql/
/etc/init.d/mysqld start
ls /var/lib/mysql/
/etc/init.d/mysqld stoplvextend -L +4G /dev/clustervg/demo
lvextend -l +1023 /dev/clustervg/demo      ##磁盘扩展
lvs

umount /var/lib/mysql/
e2fsck -f /dev/clustervg/demo
resize2fs /dev/clustervg/demo

yum install -y man xz-*
yum install -y gfs2-utils-3.0.12.1-59.el6.x86_64                ##安装gfs2服务
mkfs.gfs2 -t westos_ha:mygfs2 -p lock_dlm -j 2 /dev/clustervg/demo ##
gfs2_tool sb /dev/clustervg/demo all
blkid

vim /etc/fstabUUID="8326924a-f0db-4f0a-db1b-f91b27be2c86"     /var/lib/mysql gfs2 _netdev 0 0##UUID使用blkid查询lvm所对应的id

fuser -vm /var/lib/mysql/
/etc/init.d/mysqld stop
mount -a


主机在浏览器的luci页面上配置mysql集群服务(基于gfs2)




Linux中基于ricci luci的集群服务实现web高可用(apache,iscsi,GSF2集群服务)相关推荐

  1. linuxweb集群mysql_企业web高可用集群实战之lvs+keepalived+mysql

    前端用两台server做lvs+keepalived负载调度器,中间用apache+php作为web应用服务器,后端用两台做mysql高可用,用nfs.mfs或作为web文件共享服务器 系统环境: L ...

  2. 项目实战2 | 基于Swarm+Prometheus实现双VIP可监控Web高可用集群

    创作不易,来了的客官点点关注,收藏,订阅一键三连❤

  3. 实现Kubernetes跨集群服务应用的高可用

    我们在进行生产环境部署时得到的一个明确的需求,是Kubernetes用户希望服务部署能够zone.跨区域.跨集群甚至跨云边界(译者:如跨云供应商).相比单集群多zone部署,跨集群服务提供按地域分布, ...

  4. Linux 高可用(HA)集群之Pacemaker详解

    大纲 说明:本来我不想写这篇博文的,因为前几篇博文都有介绍pacemaker,但是我觉得还是得写一下,试想应该会有博友需要,特别是pacemaker 1.1.8(CentOS 6.4)以后,pacem ...

  5. 基于LVS高可用架构实现Nginx集群分流

    Nginx实用插件_踩踩踩从踩的博客-CSDN博客 前言 前面文章介绍Nginx的核心及扩展插件必要的性能优化,以及在nginx中如何实用用https:本篇文章会继续讲解重要的概念 lvs高可用框架, ...

  6. 基于高可用配置的RabbitMQ集群实践

    本文将提供一个基于高可用配置的RabbitMQ集群方案.通过介绍RabbitMQ的基本概念.主要作用和使用场景,并搭建RabbitMQ单节点环境.用程序演示消息发送接收过程,以及搭建RabbitMQ高 ...

  7. Linux 高可用(HA)集群之keepalived详解

    大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用的前端负载均衡器 一.前言 这篇文章是前几篇文章的总结,我们先简单的总结一下我们前面讲解的内容 ...

  8. Linux 高可用(HA)集群之DRBD详解

    http://freeloda.blog.51cto.com/2033581/1275384 大纲 一.前言 二.DRBD 是什么 三.DRBD 主要功能 四.DRBD 工作原理 五.DRBD与HA ...

  9. 深入浅出百亿请求高可用Redis(codis)分布式集群揭秘

    摘要:作为noSql中的kv数据库的王者,redis以其高性能,低时延,丰富的数据结构备受开发者青睐,但是由于redis在水平伸缩性上受限,如何做到能够水平扩容,同时对业务无侵入性是很多使用redis ...

最新文章

  1. Hadoop CDH4.5 HBase部署
  2. 16个Linux服务器监控命令
  3. 博物馆守卫问题(世界名画展览馆)
  4. 密码学电子书_密码学中的电子密码书(ECB)
  5. 图解 RoIAlign 以及在 PyTorch 中的使用(含代码示例)
  6. db h2 数据类型_H2数据库函数及数据类型概述-阿里云开发者社区
  7. cmd查看所有数据库 db2_民生银行数据库自动化部署的探索与实践
  8. 如何在java输入_怎么在java中编写输入语句?
  9. 用 Boost.extension 做C/C++插件
  10. 读书202101『股票大作手回忆录』
  11. sqlserver中日期转字符串
  12. C语言推箱子完整代码
  13. 人的9种2266对联文字的世界纪录(图)
  14. 支付宝前端团队详解基于Node.js Web框架Chair
  15. c语言标准库详解(九):实用函数stdlib.h
  16. hibernate hbb.xml 映射关系
  17. android用什么更新应用程序,如何在Android上更新应用程序 教你如何更新安卓手机APP...
  18. IDA详细使用教程,适合逆向新手的实验报告
  19. 面试问到DCL失效不知所措
  20. 这几行码是什么意思呢

热门文章

  1. Swift 3.0 打开手机手电筒
  2. html语言教程 ppt,HTML语言基础入门课件.ppt
  3. VR电影这一新概念在中国电影道路上的探索
  4. 企业直播云服务崛起背后:PaaS平台成直播下半场“杀手锏”
  5. word2016 卡顿_office2016打开卡顿怎么办?office2016打开缓慢的解决技巧
  6. android_16_布局笔记
  7. 【SD-WAN】哪些垂直行业可以从SD-WAN部署中获益?
  8. 【gdx ashley】入门
  9. mysql数据应用从入门_《MySQL数据库应用从入门到精通》
  10. GEE:提取一个小区域影像的所有波段像素值到csv