LVS+Keepalived高可用群集

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

第一部分 环境准备 一:调度器两台(双机热备) 系统:Linux—CentOS 7.4 IP地址:192.168.80.10(主) IP地址:192.168.80.20(备) 二:Web服务器两台 系统:Linux—CentOS 7.4 IP地址:192.168.80.30(SERVER AA) IP地址:192.168.80.40(SERVER BB) 三:客户端电脑一台:以win7为例,测试用 IP地址:192.168.80.2

第二部分 使用Keepalived搭建双机热备 第一步:配置主调度器 [root@dd01 ~]# modprobe ip_vs //加载ip_vs模块 [root@dd01 ~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm //安装管理软件ipvsadm [root@dd01 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel //安装编译工具与插件 [root@dd01 ~]# tar xzvf keepalived-1.4.2.tar.gz //解压keepalived安装包 [root@dd01 ~]# cd keepalived-1.4.2/ [root@dd01 keepalived-1.4.2]# ./configure --prefix=/ //配置 [root@dd01 keepalived-1.4.2]# make && make install //编译与安装 [root@dd01 keepalived-1.4.2]# cp keepalived/etc/init.d/keepalived /etc/init.d/
//加入系统管理服务 [root@dd01 keepalived-1.4.2]# systemctl enable keepalived //设置开机自启动 [root@dd01 keepalived-1.4.2]# vi /etc/keepalived/keepalived.conf //编辑配置文件 ! Configuration File for keepalived global_defs { router_id LVS_01 //本服务器的名称 } vrrp_instance VI_1 { //定义VRRP热备实例 state MASTER //热备状态,MASTER表示主服务器,BACKUP表示从服务器 interface ens33 //承载VIP地址的物理接口 virtual_router_id 51 //虚拟路由器的ID号,每个热备组保持一致 priority 110 //优先级,数值越大优先级越高 advert_int 1 //通告间隔秒数(心跳频率) authentication { //热备认证信息,每个热备组保持一致 auth_type PASS //认证类型 auth_pass 6666 //密码字符串 } virtual_ipaddress { //指定漂移地址(VIP),可以有多个 192.168.80.100 } } virtual_server 192.168.80.100 80 { //虚拟服务器地址(VIP)、端口 delay_loop 6 //健康检查的间隔时间(秒) lb_algo rr //轮询(rr)调度算法 lb_kind DR //直接路由(DR)群集工作模式 persistence_timeout 60 //连接保持时间(秒) protocol TCP //应用服务器采用的是TCP协议 real_server 192.168.80.30 80 { //第一个Web服务器节点的地址、端口 weight 1 //节点的权重 TCP_CHECK { //健康检查方式 connect_port 80 //检查的目标端口 connect_timeout 3 //连接超时(秒) nb_get_retry 3 //重试次数 delay_before_retry 3 //重试间隔 } } real_server 192.168.80.40 80 { //第二个Web服务器节点的地址、端口 weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } 保存退出 [root@dd01 keepalived-1.4.2]# service keepalived start [root@dd01 keepalived-1.4.2]# ip addr show dev ens33 //验证绑定了的虚拟地址 [root@dd01 keepalived-1.4.2]# ipvsadm –L //查看LVS虚拟服务器 [root@dd01 keepalived-1.4.2]# tail -f /var/log/messages

第二步:配置从调度器 [root@dd02 ~]# modprobe ip_vs //加载ip_vs模块 [root@dd02 ~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm //安装管理软件ipvsadm [root@dd02 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel [root@dd02 ~]# tar xzvf keepalived-1.4.2.tar.gz [root@dd02 ~]cd keepalived-1.4.2/ [root@dd02 keepalived-1.4.2]# ./configure --prefix=/ [root@dd02 keepalived-1.4.2]# make && make install [root@dd02 keepalived-1.4.2]# cp keepalived/etc/init.d/keepalived /etc/init.d/ [root@dd02 keepalived-1.4.2]# systemctl enable keepalived [root@dd02 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.80.100 } } virtual_server 192.168.80.100 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 60 protocol TCP real_server 192.168.80.30 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.80.40 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } 保存退出 [root@dd02 keepalived-1.4.2]# service keepalived start [root@dd02 keepalived-1.4.2]# ipvsadm –L

第三步:验证结果

  1. dd01主服务器keepalived服务开启状态,验证dd02从服务器状态 [root@dd02 keepalived-1.4.2]# ip addr show dev ens33
    [root@dd02 keepalived-1.4.2]# tail -f /var/log/messages //备机状态
  2. 模拟主服务器故障,将dd01主服务器keepalived服务关闭,验证dd02从服务器状态 [root@dd01 keepalived-1.4.2]# systemctl stop keepalived //备机自己切换到主机状态 //双机热备搭建完成

第三部分 配置Web节点服务器 第一步:配置SERVER AA服务器(192.168.80.30)

  1. 配置http服务 //安装http服务 [root@aa ~]# yum install -y httpd //编辑主配置文件 [root@aa ~]# vi /etc/httpd/conf/httpd.conf ServerName aa //将“#”号去掉,修改主机名 保存退出 //配置默认显示网页 [root@aa ~]# cd /var/www/html/ [root@aa html]# echo "SERVER AA" > index.html [root@aa html]# service httpd start //重启http服务 //win7验证http服务 访问http://192.168.80.30
  2. 配置DR模式 [root@aa ~]# vi web.sh #!/bin/bash #haha ifconfig lo:0 192.168.80.100 broadcast 192.168.80.100 netmask 255.255.255.255 up route add -host 192.168.80.100 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 保存退出 [root@aa ~]# sh web.sh //执行脚本 [root@aa ~]# ifconfig //查看虚拟接口

第二步:配置SERVER BB服务器(192.168.80.40)

  1. 配置http服务 //安装http服务 [root@bb ~]# yum install -y httpd //编辑主配置文件 [root@bb ~]# vi /etc/httpd/conf/httpd.conf ServerName bb //将“#”号去掉,修改主机名 保存退出 //配置默认显示网页 [root@bb ~]# cd /var/www/html/ [root@bb html]# echo "SERVER BB" > index.html [root@bb html]# service httpd start //重启http服务 //win7验证http服务 访问http://192.168.80.40 ----------配置DR模式--------- [root@bb ~]# vi web.sh #!/bin/bash #hehe ifconfig lo:0 192.168.80.100 broadcast 192.168.80.100 netmask 255.255.255.255 up route add -host 192.168.80.100 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 保存退出 [root@bb ~]# sh web.sh //执行脚本 [root@bb ~]# ifconfig //查看虚拟接口

第四部分 测试LVS+Keepalived高可用群集 在客户端的浏览器中,能够通过LVS+Keepalived群集的漂移地址(192.168.80.100)正常访问web页面内容,则验证群集构建成功。

  1. 验证两台Web服务器轮询工作 Win7访问http://192.168.80.100 //由于设置了连接保持时间为60秒,一分钟后再重新访问该地址 //自动轮询交给另一台Web服务器

  2. 模拟主调度器故障,验证结果 [root@dd01 keepalived-1.4.2]# systemctl stop keepalived //主调度器keepalived停止工作 //从调度器自动切换,继续工作 //win7访问http://192.168.80.100,查看结果 //一分钟后,重新访问http://192.168.80.100,查看结果 //双机热备已经起作用

  3. 模拟Web服务器aa故障 [root@bb ~]# service httpd stop //将bb服务器停止工作 [root@dd01 keepalived-1.4.2]# tail -f /var/log/messages 访问http://192.168.80.40 一分钟后,重新访问http://192.168.80.40 //无法访问,验证成功 [root@bb ~]# service httpd start //恢复启动bb服务器 //查看调度器日志: //已成功将bb服务器加入到服务器池

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