搭建高可用集群
1.keepalived是什么:
keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障
2.keepalived工作原理:
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
将N台提供相同功能的服务器组成一个服务器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该服务器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master
3.keepalived主要有三个模块:
分别是core、check和vrrp。 core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。 check负责健康检查,包括常见的各种检查方式。 vrrp模块是来实现VRRP协议的。
Keepalived+nginx 实现web高可用
准备工作
IP | 主机名 | 节点 |
192.168.100.101 | Master | 主 |
192.168.100.102 | Backup | 从 |
192.168.100.100 | Vip | 虚拟ip |
安装nginx
在master编译安装nginx,backup使用yum安装nginx
Master节点
进入nginx: download 下载nginx安装包,将安装包上传到/usr/local/src/上
进行解压
[root@master src]# tar zxvf nginx-1.18.0.tar.gz
配置编译选项
[root@master nginx-1.18.0]# ./configure --prefix=/usr/local/nginx
[root@master nginx-1.18.0]# make && make install
注意
如果发生报错,可能是相关依赖包没有安装
[root@master nginx-1.18.0]# yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
启动master上的nginx
[root@master nginx-1.18.0]# cd /usr/local/nginx/sbin/
[root@master sbin]# ./nginx
进入浏览器输入 http://192.168.100.101
Backup节点
直接使用yum命令进行安装
[root@backup ~]# yum install -y nginx
如果安装不了先使用下面命令,再安装nginx
[root@backup ~]# yum install -y epel-release
启动nginx
[root@backup ~]# systemctl start nginx
进入浏览器输入http://192.168.100.102
搭建负载均衡集群
负载均衡集群不难理解,从字面上也能猜到,简单说就是让多台服务器均衡地去承载压力。实现负载均衡集群的开源软件有LVS、keepalived、haproxy、Nginx等,当然也有优秀的商业负载均衡设比如F5、NetScaler等
安装keepalived
在master和backup节点安装keepalived
# yum install -y keepalived
编辑101keepalived[root@master sbin]# vi /etc/keepalived/keepalived.conf
编译监控脚本
[root@master sbin]# vi /usr/local/sbin/check_ng.sh
给脚本x权限,否则无法调用
[root@master sbin]# chmod a+x /usr/local/sbin/check_ng.sh
启动脚本
[root@master sbin]# bash /usr/local/sbin/check_ng.sh
监听vip
[root@master sbin]# ip a
查看nginx服务是否启动
BACKUP节点
编辑配置文件
编辑backup节点脚本,与master部分不同
[root@backup ~]# vim /usr/local/sbin/check_ng.sh
给监控脚本权限,并启动backup节点keepalived
[root@backup ~]# chmod a+x /usr/local/sbin/check_ng.sh
[root@backup ~]# systemctl start keepalived
测试
先将master上的nginx关掉
[root@master sbin]# ./nginx -s stop
可以看到
Vip在backup下
在master节点添加规则
[root@master sbin]# iptables -I OUTPUT -p vrrp -j DROP
可以看到backup节点被设置了vip
但是master节点也有vip,master虽然被禁掉VRRP协议,但它并不认为自己死机了,所以不会释放vip资源。如果master和backup都绑定了vip。那么对外提供服务时就会紊乱,这就叫“脑裂”。
复原
[root@master sbin]# iptables -D OUTPUT -p VRRP -j DROP
[root@master sbin]# ./nginx
之后将master上的keepalived服务关掉
Vip 已经到backup上,再将master上的keepalived服务开启
此时vip又回到master上
DR模式LVS搭建
调度器dir:192.168.100.103
真实服务器rs1:192.168.100.101
真实服务器rs2:192.168.100.102
在dir上编写脚本
[root@dir ~]# vim /usr/local/sbin/lvs_dr.sh
执行脚本后查看网卡安装情况
两台rs也需要编写脚本
[root@rs1 ~]# vim /usr/local/sbin/lvs_rs.sh
执行脚本
#bash /usr/local/sbin/lvs_rs.sh
更改nginx网页页面,以便更好区分
[root@rs1 sbin]# echo "test1" > /usr/local/nginx/html/index.html (编译安装)
[root@rs2 ~]# echo "test2" > /usr/share/nginx/html/index.html (yum安装)
keepalived+LVS
主keepalived(调度器)ds1:192.168.100.103
从keepalived(调度器)ds2:192.168.100.104
真实服务器rs1:192.168.100.101
真实服务器rs2:192.168.100.102
VIP:192.168.100.100
在ds1服务器与ds2服务器上安装keepalived和ipvsadm
# yum install -y keepalived
# yum install -y ipvsadm
在ds1和ds2服务器上编辑keepalived文件
# > /etc/keepalived/keepalived.conf 清空原配置
# vim /etc/keepalived/keepalived.conf
执行rs1和rs2服务器的脚本
# sh /usr/local/sbin/lvs_rs.sh
启动ds1和ds2上的keepalived服务
[root@ds1 ~]# systemctl start keepalived
检查进程
关闭rs1的nginx服务 访问浏览器vip192.168.100.100
在调度器上进行查看
[root@ds1 ~]# ipvsadm -ln
再开启rs1的nginx服务
关闭调度器ds1的keepalived服务,查看浏览器
再打开keepalived服务,查看浏览器