centos 7.5搭建LVS+Keepalived+nginx高可用集群

LVS+Keepalived高可用群集

目录
第一部分 环境准备
第二部分 使用Keepalived搭建双机热备
第三部分 配置Web节点服务器
第四部分 测试LVS+Keepalived高可用群集

第一部分 环境准备
一:调度器两台(双机热备)
系统:Linux—CentOS 7.5
IP地址:192.168.74.11(主)
IP地址:192.168.74.12(备)
二:Web服务器两台
系统:Linux—CentOS 7.5
IP地址:192.168.74.13(web1)
IP地址:192.168.74.14(web2)

三:客户端电脑一台:以win10为例,测试用
IP地址:192.168.74.1

第二部分 使用Keepalived搭建双机热备

第一步:配置主调度器
[root@dr1 ~]# modprobe ip_vs    #加载ip_vs模块
[root@dr1 ~]# yum install -y ipvs    #安装ipvsadm
[root@dr1 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel    #安装编译工具与依赖包
[root@dr1 ~]# tar xzvf keepalived-1.4.2.tar.gz    #解压keepalived安装包
[root@dr1 ~]# cd keepalived-1.4.2/
[root@dr1 keepalived-1.4.2]# ./configure --prefix=/keepalived-1.4.2    #配置
[root@dr1 keepalived-1.4.2]# make && make install    #编译与安装
[root@dr1 keepalived-1.4.2]# cp keepalived/etc/init.d/keepalived /etc/init.d/    #加入系统管理服务
[root@dr1 keepalived-1.4.2]# systemctl enable keepalived    #设置开机自启动
[root@dr1 keepalived-1.4.2]# vi /etc/keepalived/keepalived.conf    #编辑配置文件

! Configuration File for keepalived
global_defs {
router_id LVS_01    
}
vrrp_instance VI_1 {
state MASTER    #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态。
interface ens33
virtual_router_id 51    #虚拟路由标识,同一个vrrp_instance的MASTER和BACKUP的 
                         vitrual_router_id 是一致的。
priority 150    #优先级,同一个vrrp_instance的MASTER优先级必须比BACKUP高。
advert_int 1    #MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒。
authentication {
auth_type PASS    #验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种。
auth_pass 6666    #同一vrrp 实例MASTER 与BACKUP 使用相同的密码才能正常通信。
}
virtual_ipaddress {    #虚拟ip地址,这个ip 必须与我们在lvs 客户端设定的vip 相一致!
192.168.74.100
}
}
virtual_server 192.168.74.100 80 {     #虚拟IP,来源与上面的虚拟IP地址,后面加空格加端口号 
delay_loop 6    #健康检查间隔,单位为秒
lb_algo rr    #负载均衡调度算法,一般用wrr、rr、wlc
lb_kind DR    #负载均衡转发规则。一般包括DR,NAT,TUN 3种。
persistence_timeout 60    #会话保持时间
protocol TCP    #转发协议,有TCP和UDP两种,一般用TCP。

real_server 192.168.74.13 80 {    #真实服务器,包括IP和端口号
weight 1    #权重,数值越大,权重越高 
TCP_CHECK {    #通过tcpcheck判断RealServer的健康状态
connect_port 80    #检测端口
connect_timeout 3    #连接超时时间
nb_get_retry 3    #重连次数
delay_before_retry 3    #重连时间间隔
}
}
real_server 192.168.74.14 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

其实配置文件中主要要修改的选项没有很多,有三个参数要注意
route_id  XXX    #MASTER和BACKUP不同
virtual_router_id 51    #同一个实例下,MASTER和BACKUP相同
priority 100    #优先级,同一个实例下,MASTER高于BACKUP

[root@dr1 ~]# service keepalived start
[root@dr1 ~]# ip addr show dev ens33    #验证绑定了的虚拟地址

[root@dr1 ~]# ipvsadm –L    #查看LVS虚拟服务器

[root@dr1 ~]# tail -f /var/log/messages

第二步:配置从调度器

[root@dr2 ~]# modprobe ip_vs    #加载ip_vs模块
[root@dr2 ~]# yum install -y ipvs    #安装ipvsadm
[root@dr2 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel    #安装编译工具与依赖包
[root@dr2 ~]# tar xzvf keepalived-1.4.2.tar.gz    #解压keepalived安装包
[root@dr2 ~]# cd keepalived-1.4.2/
[root@dr2 keepalived-1.4.2]# ./configure --prefix=/keepalived-1.4.2    #配置
[root@dr2 keepalived-1.4.2]# make && make install    #编译与安装
[root@dr2 keepalived-1.4.2]# cp keepalived/etc/init.d/keepalived /etc/init.d/    #加入系统管理服务
[root@dr2 keepalived-1.4.2]# systemctl enable keepalived    #设置开机自启动
[root@dr2 keepalived-1.4.2]# vi /etc/keepalived/keepalived.conf    #编辑配置文件

! Configuration File for keepalived
global_defs {
router_id LVS_02
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 105
advert_int 1
authentication {
auth_type PASS
auth_pass 6666
}
virtual_ipaddress {
192.168.74.100
}
}
virtual_server 192.168.74.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.74.13 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.74.14 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

[root@dr2 ~]# service keepalived start
[root@dr2 ~]# ipvsadm –L 

第三步:验证结果

 1.dr1主服务器keepalived服务开启状态

[root@dr1 ~]# service keepalived status


 

2.验证dd02从服务器状态  

[root@dr2 ~]# ip addr show dev ens33

 [root@dr2 ~]# tail -f /var/log/messages

3.模拟主服务器故障,将dr1主服务器keepalived服务关闭,验证dr2从服务器状态 

[root@dr1 ~]# systemctl stop keepalived

[root@dr2 ~]#  tail -f /var/log/messages      

#备机自动切换成主机状态

[root@dr2 ~]# ip addr show dev ens33 

#双机热备搭建完成

第三部分 配置Web节点服务器

第一步:配置web1服务器(192.168.74.13)

1.配置nginx服务

nginx安装部分省略,2台都一样

 

 配置DR模式,2台都一样

#!/bin/bash

SNS_VIP=192.168.74.100
 
/etc/rc.d/init.d/functions
 
case "$1" in
start)
       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
       /sbin/route add -host $SNS_VIP dev lo:0
       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"
 
       ;;
stop)
       ifconfig lo:0 down
       route del $SNS_VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
 
exit 0

2.验证两台Web服务器轮询工作

Win10访问http://192.168.74.100

#由于设置了连接保持时间为60秒,一分钟后再重新访问该地址 

#自动轮询交给另一台Web服务器 

3.模拟主调度器故障,验证结果

[root@dr1 ~]# systemctl stop keepalived

[root@dr2 ~]# tail -f /var/log/messages

 #自动切换成master,继续工作

#win10访问http://192.168.74.100

#一分钟后,继续访问 http://192.168.74.100

模拟Web1服务器故障,验证结果

[root@dr2 ~]# tail -f /var/log/messages

访问web1服务器http://192.168.74.13

结果显示无法访问

 访问//http://192.168.74.100

一分钟后,继续访问//http://192.168.74.100

#无法访问web1服务器,验证成功

#启动web1服务器 

[root@web1 ~]# service nginx start

#查看调度器日志

#已成功将web1服务器加入到服务器池

#LVS+Keepalived已成功搭建并测试完成

猜你喜欢

转载自blog.csdn.net/weixin_42125267/article/details/81382944