文章目錄
- 前言
- 一 Keepalived
- 1.1 Keepalived運用分析
- 1.2 Keepalived工具介紹
- 1.3 Keepalived實作原理剖析
- 1.3.1 VRRP
- 1.4 Keepalived講解
- 1.5 Keepalived安裝與啟動
- 1.6 配置Keepalived master服務器
- 1.7 配置Keepalived slave服務器
- 二 部署LVS和Keepalived協同合作群集
- 2.1 部署Keepalived顯示雙機熱備效果
- 2.1.1 如何顯示雙機熱備的效果
- 2.2 環境準備
- 2.2.1 設備明細
- 2.2.2 所有設備重命名
- 2.3 部署流程
- 2.3.1 在nfs存盤服務器上
- 2.3.2 在web1,web2節點服務器上
- 2.3.3 在lvs1 主調度器
- 2.3.4 在lvs2備調度器上
- 2.3.3.1 決議:scp命令:遠程完全復制
- 2.4 部署檢驗
- 2.4.1 調度器作業情況
- 2.4.2 測驗主備自動轉換功能
- 2.4.3 模擬Web2節點出現問題down后,調度情況
- 2.4.4 問題設備修復,重新上線
- 總結
前言
Keepalived起初是專門針對LVS設計的一款強大的輔助工具,主要用來提供故障切換和健康檢查功能———判斷LVS負載調度器,節點服務器的可用性,及時隔離并替換為新的服務器,當故障主機恢復后將其重新加入群集中,
一 Keepalived
1.1 Keepalived運用分析
企業應用中,單臺服務器承擔應用存在單點故障的危險
單點故障一旦發生,企業服務將發生中斷,造成極大的危害
1.2 Keepalived工具介紹
專為LVS和HA設計的一款健康檢查工具
作用:
支持故障自動切換(Failover)
支持節點健康狀態檢查(Health Checking)
1.3 Keepalived實作原理剖析
Keepalived采用VRRP熱備份協議
實作Linux服務器的多機熱備份功能
1.3.1 VRRP
VRRP(虛擬路由冗余協議)是針對路由器的一種備份解決方案
由多臺路由器組成一個熱備組,通過共用的虛擬IP地址對外提供服務
每個熱備組內同時只有一臺主路由器提供服務,其它路由器處于冗余狀態
若當前在線的路由器失效,則其它路由器會根據設定的優先級自動接替虛擬IP地址,繼續提供服務,

1.4 Keepalived講解
1.Keepalived可實作多機熱備,每個熱備組可有多臺服務器
2.雙機熱備的故障切換是由虛擬IP地址的漂移來實作,適用于各種應用服務器
3.實作基于Web服務的雙機熱備

1.5 Keepalived安裝與啟動
1.在LVS群集環境中應用時,也需用到ipvsadm管理工具
2.YUM安裝Keepalived
3.啟用Keepalived服務
1.6 配置Keepalived master服務器
1.Keepalived配置目錄位于/etc/keepalived
2.keepalived.conf是主組態檔
global_defs{...}區段指定全域引數
vrrp_instance實體名稱{...}區段指定VRRP熱備引數)(組1,組2)
注釋文字以“!”符號開頭
目錄samples,提供了許多配置樣例作為參考
3.常用配置選項
router_id HA_TEST_R1:本路由器(服務器)的名稱
vrrp_instance VI_1:定義VRRP熱備實體
state MASTER:熱備狀態,MASTER表示主服務器
interface ens33:承載VIP地址的物理介面
virtual_router_id 1:虛擬路由器的ID號,每個熱備組保持一致
priority 100:優先級,數值越大越優先級越高
advert_int 1:通告間隔秒數(心跳頻率)(1秒)
auth_type PASS:認證型別
auth_pass 123456:密碼字串
virtaul_ipaddress{vip}:指定漂移地址(VIP),可以有多個
1.7 配置Keepalived slave服務器
1.Keepalived備份服務器的配置與master的配置有三個選項不同
router_id:設為自有名稱
state:設為BACKUP
priority:值低于主服務器
2.其它選項與master相同
二 部署LVS和Keepalived協同合作群集
2.1 部署Keepalived顯示雙機熱備效果
2.1.1 如何顯示雙機熱備的效果
主,備機均啟用Web服務,設定不同內容
先后禁用,啟用主服務器的網卡(主服務器down,測驗主備)
針對節點服務器同理進行操作
2.2 環境準備
2.2.1 設備明細
20.0.0.10 lvs1+keepalived virtual-ip 20.0.0.200
20.0.0.11 lvs2+keepalived virtual-ip 20.0.0.200
20.0.0.12 web1
20.0.0.13 web2
20.0.0.14 nfs
20.0.0.15 client
2.2.2 所有設備重命名
[root@server1 ~]# hostnamectl set-hostname lvs01
[root@server1 ~]# bash
[root@server2 ~]# hostnamectl set-hostname lvs02
[root@server2 ~]# bash
[root@client1 ~]# hostnamectl set-hostname web1
[root@client1 ~]# bash
[root@server1 ~]# hostnamectl set-hostname web2
[root@server1 ~]# bash
[root@localhost ~]# hostnamectl set-hostname nfs
[root@localhost ~]# bash
[root@server6 ~]# hostnamectl set-hostname client
[root@server6 ~]# bash
2.3 部署流程
2.3.1 在nfs存盤服務器上
1.配置共享目錄,并創建兩個網頁作為web1,web2的頁面
[root@nfs ~]# mkdir /web1
[root@nfs ~]# mkdir /web2
[root@nfs ~]# echo "<h1>this is apple lvs1.</h1>" > /web1/index.html
[root@nfs ~]# echo "<h1>this is apple lvs2.</h1>" > /web2/index.html
2.查看軟體是否安裝
[root@nfs ~]# rpm -qa | grep nfs-utils
[root@nfs ~]# rpm -qa | grep rpcbind
3.組態檔
[root@nfs ~]# vi /etc/exports
[root@nfs ~]# systemctl restart rpcbind 服務啟動
[root@nfs ~]# systemctl restart nfs
/web1 20.0.0.12 (ro)
/web2 20.0.0.13 (ro)

4.查看共享情況
[root@nfs ~]# showmount -e

2.3.2 在web1,web2節點服務器上
1.安裝軟體
[root@web1 ~]# yum -y install httpd
[root@web2 ~]# yum -y install httpd
2.掛載到nfs存盤服務器上
[root@web1 ~]# mount 20.0.0.14:/web1 /var/www/html/
[root@web1 ~]# df -Th 查看掛載情況
[root@web1 ~]# systemctl start httpd 服務啟動
[root@web1 ~]# curl http://localhost 測驗網頁

在web2上
[root@web2 ~]# mount 20.0.0.14:/web2 /var/www/html/
[root@web2 ~]# df -Th
[root@web2 ~]# systemctl start httpd
[root@web2 ~]# curl http://localhost

在wed1節點服務器上
配置腳本
[root@web1 ~]# vi web1.sh
[root@web1 ~]# sh web1.sh 腳本啟動
[root@web1 ~]# ifconfig 查看虛擬介面
[root@web1 ~]# route -n 查看增加的路由
#!/bin/bash
# lvs web1 廣播地址 子網掩碼
ifconfig lo:0 20.0.0.200 broadcast 20.0.0.200 netmask 255.255.255.255 up 立即啟用
route add -host 20.0.0.200 dev lo:0 虛介面生成一個路由
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null 加載生效,并在螢屏中輸出不顯示



在web2上同理
[root@web2 ~]# vi web2.sh
[root@web2 ~]# sh web2.sh
[root@web2 ~]# ifconfig
[root@web2 ~]# route -n



2.3.3 在lvs1 主調度器
1.確認內核對LVS的支持,手動加載
[root@lvs01 ~]# modprobe ip_vs 對ip_vs的探測加載
[root@lvs01 ~]# cat /proc/net/ip_vs 查看基本資訊
[root@lvs01 ~]# yum -y install ipvsadm 安裝軟體

先添加keepalived-2.0.13.tar.gz
開始配置keepalived
2.安裝依賴包
[root@lvs01 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel

3.解壓縮軟體
[root@lvs01 ~]# tar zxvf keepalived-2.0.13.tar.gz
[root@lvs01 ~]# cd keepalived-2.0.13/ 進入配置編譯安裝
[root@lvs01 keepalived-2.0.13]# ./configure --prefix=/ 配置
[root@lvs01 keepalived-2.0.13]# make && make install 編譯安裝
[root@lvs01 keepalived-2.0.13]# ls -lh
[root@lvs01 keepalived-2.0.13]# cd keepalived/
[root@lvs01 keepalived]# cd etc/init.d/
[root@lvs01 init.d]# cp keepalived /etc/init.d/ 復制檔案
[root@lvs01 init.d]# cd
[root@lvs01 ~]# systemctl enable keepalived.service 設定開機自啟動

4.編輯組態檔
[root@lvs01 ~]# vi /etc/keepalived/keepalived.conf
[root@lvs01 ~]# systemctl start keepalived.service 啟動服務
[root@lvs01 ~]# ip addr 查看虛擬地址,存在主調度器上
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 優先級,數值越大越優先級越高,默認100
advert_int 1 通告間隔秒數(心跳頻率)
authentication { 熱備認證資訊,每個熱備組保持一致
auth_type PASS 認證型別(密碼認證)
auth_pass 6666 密碼字串
}
virtual_ipaddress { 指定漂移地址(VIP),虛擬地址,可以有多個
20.0.0.200
}
}
virtual_server 20.0.0.200 80 { 虛擬服務器地址(VIP),埠
lb_algo rr 輪詢(rr)調度演算法
lb_kind DR 直接路由(DR)群集作業模式
persistence_timeout 6 連接保持時間6秒
protocol TCP 應用服務器采用的是TCP協議
real_server 20.0.0.12 80 { 第一個Web服務器節點的地址,埠(真實地址)
weight 1 節點的權重
TCP_CHECK { 健康檢查方式
connect_port 80 檢查的目標埠
connect_timeout 3 連接超時(秒)
nb_get_retry 3 重試次數
delay_before_retry 3 重試間隔
}
}
real_server 20.0.0.13 80 { 第二個Web服務器節點的地址,埠(真實地址)
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}



5.查看日志檔案中的引數變化
[root@lvs01 ~]# vi /var/log/messages
[root@lvs01 ~]# tail -100 /var/log/messages
[root@lvs01 ~]# ipvsadm -Ln 查看后臺調度情況


2.3.4 在lvs2備調度器上
完成基礎配置安裝
[root@lvs02 keepalived-2.0.13]# cd keepalived/
[root@lvs02 keepalived]# cd etc/init.d/
[root@lvs02 init.d]# ls -lh
[root@lvs02 init.d]# cp keepalived /etc/init.d/

在lvs1服務器上
6.免密
[root@lvs01 ~]# ssh-keygen -t rsa
[root@lvs01 ~]# ssh-copy-id 20.0.0.11

7.拷貝檔案
[root@lvs01 ~]# scp /etc/keepalived/keepalived.conf root@20.0.0.11:/etc/keepalived/

2.3.3.1 決議:scp命令:遠程完全復制
格式1:在客戶機20.0.0.11上
scp root@20.0.0.12:/opt/a /root
拷貝用戶名為root,ip地址為20.0.0.12設備上opt目錄下a檔案到本機root目錄下
格式2:在服務器20.0.0.12上
scp /opt/b root@20.0.0.11:/root
拷貝本機上的opt目錄下的b檔案到用戶名root,ip地址20.0.0.11設備上的root目錄下
在lvs2 服務器上
1.編輯組態檔
[root@lvs02 ~]# vi /etc/keepalived/keepalived.conf
修改引數
router_id lvs_02 服務器名稱
state BACKUP 熱備狀態,從服務器
priority 105 優先級
[root@lvs02 ~]# systemctl start keepalived.service 啟動服務
[root@lvs02 ~]# systemctl status keepalived.service 查看服務狀態


2.查看地址資訊
[root@lvs02 ~]# ip addr
發現無虛擬地址資訊,主備調度器之間存在差異
[root@lvs02 ~]# ipvsadm -Ln 查看調度資訊

2.4 部署檢驗
2.4.1 調度器作業情況
在lvs01上
[root@lvs01 ~]# ipvsadm -Ln 查看連接情況
在瀏覽器上
http://20.0.0.200

[root@lvs01 ~]# ipvsadm -Ln 查看連接情況
[root@lvs01 ~]# ipvsadm -Lnc 查看調度情況

在客戶機client瀏覽器上
http://20.0.0.200

[root@lvs01 ~]# ipvsadm -Lnc
[root@lvs01 ~]# ipvsadm -Ln 查看連接情況

以上現象證明調度器正常作業
2.4.2 測驗主備自動轉換功能
當主出現問題,備是否會自動代替作業
在lvs01上
[root@lvs01 ~]# systemctl stop keepalived.service 關閉keepalived服務
[root@lvs01 ~]# ip addr 查看地址
發現虛擬地址消失

在lvs02上
查看日志檔案
[root@lvs02 ~]# tail -f /var/log/messages
[root@lvs02 ~]# ip addr 查看地址資訊
發現虛擬地址出現,備轉換為主

再次在瀏覽器上
http://20.0.0.200
查看調度器是否正常作業


在lvs02上
查看調度情況
[root@lvs02 ~]# ipvsadm -Lnc

2.4.3 模擬Web2節點出現問題down后,調度情況
在web2上
關閉服務
[root@web2 ~]# systemctl stop httpd
在lvs02上
查看日志檔案
[root@lvs02 ~]# tail -f /var/log/messages
[root@lvs02 ~]# ipvsadm -Ln 查看連接情況

再次在瀏覽器上
http://20.0.0.200
只會出現web1的頁面


查看調度情況
[root@lvs02 ~]# ipvsadm -Lnc

2.4.4 問題設備修復,重新上線
lvs01主調度問題恢復,重新上線
1.在lvs01上
服務重啟
[root@lvs01 ~]# systemctl start keepalived.service
[root@lvs01 ~]# ip addr 查看地址

2.web2節點恢復上線
在web2上
[root@web2 ~]# systemctl start httpd
3.查看lvs01上連接情況先后對比
[root@lvs01 ~]# ipvsadm -Ln

總結
通過以上的學習了解,對群集的結構,配置,原理又有了新的認識,掌握的新的知識,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/233617.html
標籤:其他
上一篇:微前端學習
