1. 程式人生 > >CentOS7.4—構建LVS+Keepalived高可用群集

CentOS7.4—構建LVS+Keepalived高可用群集

LVS+Keepalived高可用群集

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 "<h1>SERVER AA</h1>" > 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 "<h1>SERVER BB</h1>" > 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已成功搭建並測試完成

CentOS7.4—構建LVS+Keepalived高可用群集