日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

第18章 Linux集群架构

發布時間:2024/4/14 linux 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第18章 Linux集群架构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

keepalived介紹

  • 在這里使用keepalived來實現高可用集群,因為heartbeat在centos6上有一些問題,影響實驗效果
  • heartbeat 切換的時候,會不是很及時——>比如:主 已經宕機了,但 從 卻一直啟動不了,通信會不順暢,所以不使用 heartbeat
  • keepalived通過VRRP(Virtual Router Redundancy Protocl 中文為:虛擬路由冗余協議)來實現高可用。
  • 虛擬路由冗余協議(Virtual Router Redundancy Protocol,簡稱VRRP)是由IETF提出的解決局域網中配置靜態網關出現單點失效現象的路由協議,1998年已推出正式的RFC2338協議標準。VRRP廣泛應用在邊緣網絡中,它的設計目標是支持特定情況下IP數據流量失敗轉移不會引起混亂,允許主機使用單路由器,以及及時在實際第一跳路由器使用失敗的情形下仍能夠維護路由器間的連通性。
  • 在這個協議里,會將多臺功能相同的路由器組成一個小組,這個小組里會有1個master角色和N(N>=1)個backup角色。
  • master會通過組播的形式向各個backup發送VRRP協議的數據包,當backup收不到master發來的VRRP數據包時,就會認為master宕機了。此時就需要根據各個backup的優先級來決定誰成為新的mater。
  • Keepalived要有三個模塊,分別是core、check和vrrp。其中core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析,check模塊負責健康檢查,vrrp模塊是來實現VRRP協議的。

用keepalived配置高可用集群

  • 準備兩臺機器130和132,130作為master,132作為backup

  • 兩臺機器都執行yum install -y keepalived

  • 兩臺機器都安裝nginx,其中130上已經編譯安裝過nginx,132上需要yum安裝nginx: yum install -y nginx

  • 設定vip為100

  • 編輯130上keepalived配置文件,內容獲取地址

  • 130編輯監控腳本,內容獲取地址https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_keepalived.conf

  • 給腳本755權限

  • systemctl start keepalived 130啟動服務

  • 132上編輯配置文件,內容獲取地址

  • 132上編輯監控腳本,內容獲取地址

  • 給腳本755權限

  • 132上也啟動服務 systemctl start keepalived

keepalived配置高可用集群

1.首先準備兩臺機器,都安裝keepalived

  • keepalived,實際是包含一個服務的,也就是說這個服務用來實現高可用
A機器,安裝keepalived [root@xuexi-001 ~]# yum install -y keepalivedB機器,安裝keepalived [root@localhost ~]# yum install -y keepalived

2.這里使用 nginx ,把它作為一個高可用的對象——>使用nginx作為演示對象的原因,因為nginx在工作中,在生產環境中,很多企業把nginx做一個負載均衡器

  • 假設nginx一旦掛掉,那么后端所有的web,即使說是正常的,那也無法訪問到

3.若是A、B機器沒有裝nginx服務,可以直接 yum安裝

  • 若是lnmp安裝過nginx,則不需要安裝了(源碼包安裝的nginx)
  • 直接yum安裝的nginx,兩者很容易區分(PS:有時直接yum安裝不了,需要安裝yum擴展源——>yum install -y epel-release)
  • 源碼包安裝nginx
  • 源碼安裝nginx經常出現的錯誤
  • A機器源碼安裝nginx (PS:有時初始化的時候,會看到無法初始化,是因為缺少一些包yum install -y gcc)
B機器yum安裝nginx [root@localhost ~]# yum install -y epel-release [root@localhost ~]# yum install -y nginx [root@localhost ~]# systemctl start nginx [root@localhost ~]# ps aux | grep nginx root 1410 0.0 0.2 120752 2096 ? Ss 22:26 0:00 nginx: master process /usr/sbin/nginx nginx 1411 0.0 0.3 121136 3124 ? S 22:26 0:00 nginx: worker process root 1413 0.0 0.0 112676 984 pts/0 R+ 22:27 0:00 grep --color=auto nginx

4.更改keepalived配置文件了,內容地址

  • 默認的配置文件路徑在/etc/keepalived/keepalived.conf
  • 清空文件的快捷鍵方法 > !$
A機器更改配置文件 [root@xuexi-001 ~]# ls /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf [root@xuexi-001 ~]# > !$ //直接清空文件內容了 > /etc/keepalived/keepalived.conf [root@xuexi-001 ~]# cat /etc/keepalived/keepalived.conf [root@xuexi-001 ~]# vim /etc/keepalived/keepalived.conf //去文件地址去下載內容 將拷貝的內容復制進去 只需要改網卡名字和飄逸IP為192.168.133.100 -----------------全局配置 ------------------ global_defs { //global_defs 全局配置標識notification_email { //notification_email用于設置報警郵件地址 xuexi1@163.com //可以設置多個,每行一個}notification_email_from xuexi1@163.com //設置郵件發送地址 smtp_server 127.0.0.1 //設置郵件的smtp server地址smtp_connect_timeout 30 //設置連接smtp sever超時時間router_id LVS_DEVEL }---------------------------- VRRP配置 --------------------------------------- vrrp_script chk_nginx { script "/usr/local/sbin/check_ng.sh" //檢查服務是否正常,通過寫腳本實現,腳本檢查服務健康狀態interval 3 //檢查的時間間斷是3秒 } vrrp_instance VI_1 { //VRRP配置標識 VI_1是實例名稱 state MASTER //定義master相關interface ens33 //通過vrrp協議去通信、去發廣播。配置時,需注意自己的網卡名稱virtual_router_id 51 //定義路由器ID ,配置的時候和從機器一致priority 100 //權重,主角色和從角色的權重是不同的advert_int 1 //設定MASTER與BACKUP主機質檢同步檢查的時間間隔,單位為秒authentication { //認證相關信息auth_type PASS //這里認證的類型是PASSauth_pass aminglinux>com //密碼的形式是一個字符串}virtual_ipaddress { //設置虛擬IP地址 (VIP),又叫做漂移IP地址192.168.5.100 //更改為192.168.5.100}track_script { //加載腳本 chk_nginx } }保存退出
  • virtual_ipaddress:簡稱VIP,這個vip,兩臺機器,一個主,一個從,正常的情況是主在服務,主宕掉了,從起來了,從啟動服務,從啟動nginx以后,,啟動以后,訪問那個IP呢?把域名解析到那個IP上呢?假如解析到主上,主宕掉了,所以這個,需要定義一個公有IP(主上用的IP,從上也用的IP);這個IP是隨時可以夏掉,去配置的

5.定義監控腳本,腳本內容獲取地址https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_check_ng.sh

  • 腳本路徑在keepalived配置文件中有定義,路徑為/usr/local/sbin/check_ng.sh
A機器定義監控腳本 [root@xuexi-001 ~]# vi /usr/local/sbin/check_ng.sh#!/bin/bash #時間變量,用于記錄日志 d=`date --date today +%Y%m%d_%H:%M:%S` #計算nginx進程數量 n=`ps -C nginx --no-heading|wc -l` #如果進程為0,則啟動nginx,并且再次檢測nginx進程數量, #如果還為0,說明nginx無法啟動,此時需要關閉keepalived if [ $n -eq "0" ]; then/etc/init.d/nginx startn2=`ps -C nginx --no-heading|wc -l`if [ $n2 -eq "0" ]; thenecho "$d nginx down,keepalived will stop" >> /var/log/check_ng.logsystemctl stop keepalivedfi fi保存退出
  • “腦裂”,在高可用(HA)系統中,當聯系2個節點的“心跳線”斷開時,本來為一整體、動作協調的HA系統,就分裂成為2個獨立的個體。由于相互失去了聯系,都以為是對方出了故障。兩個節點上的HA軟件像“裂腦人”一樣,爭搶“共享資源”、爭起“應用服務”,就會發生嚴重后果——或者共享資源被瓜分、2邊“服務”都起不來了;或者2邊“服務”都起來了,但同時讀寫“共享存儲”,導致數據損壞
  • 如何判斷腦裂?
  • 分別在兩臺機查看當前服務器是否擁有虛擬IP,如果兩臺服務器都擁有,則說明發生了腦裂,證明目前雙機通信出現問題,產生此問題的原有在于 兩臺服務器都探測不到組內其他服務器的狀態(心跳請求無法正常響應),私自判定另一臺服務器掛起,則搶占虛擬IP,腦裂的出現是不被允許的,解決此問題的方法為檢查防火墻設置(關閉防火墻)或者使用串口通信。

6.腳本創建完之后,還需要改變腳本的權限(不更改權限,就無法自動加載腳本,那就無法啟動keepalived服務)

[root@xuexi-001 ~]# chmod 755 /usr/local/sbin/check_ng.sh

7.啟動keepalived服務,并查看是否啟動成功(PS:啟動不成功,有可能是防火墻未關閉或者規則限制導致的)

  • systemctl stop firewalld 關閉firewalld
  • iptables -nvL
  • setenforce 0 臨時關閉selinux
  • getenforce命令查看是否為Permissive
  • 這時再來啟動keepalived,就會看到keepalived進程服務了
[root@xuexi-001 ~]# systemctl start keepalived [root@xuexi-001 ~]# ps aux | grep keepalived root 2276 0.0 0.0 118652 1396 ? Ss 23:11 0:00 /usr/sbin/keepalived -D root 2277 0.0 0.1 127516 3304 ? S 23:11 0:00 /usr/sbin/keepalived -D root 2278 0.0 0.1 127456 2840 ? S 23:11 0:00 /usr/sbin/keepalived -D root 2303 0.0 0.0 112720 976 pts/0 R+ 23:11 0:00 grep --color=auto keepalived

8.查看nginx服務進程

[root@xuexi-001 ~]# ps aux |grep nginx root 1035 0.0 0.0 46040 1292 ? Ss 20:14 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 1041 0.0 0.2 48576 4188 ? S 20:14 0:00 nginx: worker process nobody 1042 0.0 0.2 48576 3928 ? S 20:14 0:00 nginx: worker process root 2389 0.0 0.0 112720 968 pts/0 R+ 23:12 0:00 grep --color=auto nginx

9.這時停止nginx服務

  • /etc/init.d/nginx stop
[root@xuexi-001 ~]# /etc/init.d/nginx stop Stopping nginx (via systemctl): [ 確定 ]

10.再來查看nginx服務進程,會看到自動加載了

[root@xuexi-001 ~]# ps aux |grep nginx root 2478 0.0 0.0 46040 1292 ? Ss 23:12 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 2480 0.0 0.2 48576 4192 ? S 23:12 0:00 nginx: worker process nobody 2481 0.0 0.2 48576 3928 ? S 23:12 0:00 nginx: worker process root 2515 0.0 0.0 112720 972 pts/0 R+ 23:12 0:00 grep --color=auto nginx

11.keepalived日志文件路徑

  • /var/log/messages

12.查看ip地址,使用 ip add 命令,而不能使用ifconfig命令,因為 ifconfig命令 是無法查看到vip192.168.5.100這個IP的

[root@xuexi-001 ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:b3:a2:bf brd ff:ff:ff:ff:ff:ffinet 192.168.5.130/24 brd 192.168.5.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.5.100/32 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.5.150/24 brd 192.168.5.255 scope global secondary ens33:0valid_lft forever preferred_lft foreverinet6 fe80::9625:3e1d:12c7:4fe6/64 scope link valid_lft forever preferred_lft forever 3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:b3:a2:c9 brd ff:ff:ff:ff:ff:ff

13.檢查A、B 機器下防火墻和selinux是否關閉了,若沒有關閉,可能會導致實驗失敗

  • systemctl stop firewalld 關閉firewalld
  • iptables -nvL
  • setenforce 0 臨時關閉selinux
  • getenforce命令查看是否為Permissive

以上就是主機器A的配置

backup 機器配置

1.在B機器yum安裝nginx和keepalived

[root@hf-01 ~]# yum install -y epel-release [root@hf-01 ~]# yum install -y nginx

2.關閉B機器的防火墻和selinux

  • iptables -F 清空規則
  • setenforce 0 臨時關閉selinux

3.自定義B機器keepalived配置文件,內容獲取地址,更改虛擬IP和主一樣的 https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_keepalived.conf

首先清空B機器keepalived里面自帶的配置文件 [root@localhost ~]# > /etc/keepalived/keepalived.conf 然后復制配置文件并粘貼進去,更改虛擬IP和主一樣的 [root@localhost ~]# vi !$ vi /etc/keepalived/keepalived.confglobal_defs {notification_email {aming@aminglinux.com}notification_email_from root@aminglinux.comsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL } vrrp_script chk_nginx {script "/usr/local/sbin/check_ng.sh"interval 3 } vrrp_instance VI_1 {state BACKUP //這里 和master不一樣的名字interface ens33 //網卡和當前機器一致,否則無法啟動keepalived服務virtual_router_id 51 //和主機器 保持一致priority 90 //權重,要比主機器小的數值advert_int 1authentication {auth_type PASSauth_pass aminglinux>com}virtual_ipaddress {192.168.5.100 //這里更改為192.168.5.100}track_script {chk_nginx} }保存退出

4.定義監控腳本,路徑再keepalived里面已定義過,腳本內容地址 https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_check_ng.sh

  • 這個腳本和主上的腳本有一點區別,啟動nginx的命令不同,因為一個是yum安裝,一個是源碼包安裝
[root@localhost ~]# vi /usr/local/sbin/check_ng.sh#時間變量,用于記錄日志 d=`date --date today +%Y%m%d_%H:%M:%S` #計算nginx進程數量 n=`ps -C nginx --no-heading|wc -l` #如果進程為0,則啟動nginx,并且再次檢測nginx進程數量, #如果還為0,說明nginx無法啟動,此時需要關閉keepalived if [ $n -eq "0" ]; thensystemctl start nginxn2=`ps -C nginx --no-heading|wc -l`if [ $n2 -eq "0" ]; thenecho "$d nginx down,keepalived will stop" >> /var/log/check_ng.log systemctl stop keepalivedfi fi 保存退出

5.改動腳本的權限,設置為755權限

[root@localhost ~]# chmod 755 /usr/local/sbin/check_ng.sh

6.B機器啟動keepalived服務

  • systemctl start keepalived
[root@localhost ~]# systemctl start keepalived [root@localhost ~]# ps aux |grep keepalived root 1499 0.0 0.1 118608 1388 ? Ss 23:27 0:00 /usr/sbin/keepalived -D root 1500 0.0 0.3 120732 3112 ? S 23:27 0:00 /usr/sbin/keepalived -D root 1501 0.0 0.2 120732 2532 ? S 23:27 0:00 /usr/sbin/keepalived -D root 1538 0.0 0.0 112676 984 pts/0 R+ 23:27 0:00 grep --color=auto keepalived

如何區分主和從上的nginx?

A機器,是源碼包安裝的nginx(PS:這是lnmp配置好的環境虛擬主機內容)

[root@xuexi-001 ~]# cat /usr/local/nginx/conf/vhost/ aaa.com.conf proxy.conf test.com.conf load.conf ssl.conf [root@xuexi-001 ~]# cat /usr/local/nginx/conf/vhost/aaa.com.conf server {listen 80 default_server; server_name aaa.comindex index.html index.htm index.php;root /data/wwwroot/default; location ~ \.php${include fastcgi_params;fastcgi_pass unix:/tmp/aming.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name;} }[root@xuexi-001 ~]# cat /data/wwwroot/default/index.html master This is the default site.
  • B機器是yum安裝的nginx
  • 默認的索引頁在 /usr/share/nginx/html/index.html
[root@localhost ~]# vi /usr/share/nginx/html/index.htmlbackup.backup
  • 訪問192.168.5.100這個VIP會看到和主機器(即A機器相同的內容),說明現在訪問到的是機器master,VIP在master上

問題-B機器無法調用nginx服務?

  • B機器關閉nginx服務,keepalived無法拉動nginx服務起來
  • 解決方法:
  • 再次設置755權限,就可以拉動nginx服務了

測試高可用

1.模擬線上生產環境,主機器宕機環境,最簡單直接的方法,就是直接關閉keepalived服務

2.關閉master機器(即A機器)上的keepalived服務關閉

[root@xuexi-001 ~]# systemctl stop keepalived

3.查看A機器上的VIP被已經釋放掉了

[root@xuexi-001 ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:b3:a2:bf brd ff:ff:ff:ff:ff:ffinet 192.168.5.130/24 brd 192.168.5.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.5.150/24 brd 192.168.5.255 scope global secondary ens33:0valid_lft forever preferred_lft foreverinet6 fe80::9625:3e1d:12c7:4fe6/64 scope link valid_lft forever preferred_lft forever 3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:b3:a2:c9 brd ff:ff:ff:ff:ff:ff

4.查看backup機器(即B機器)在監聽VIP

[root@localhost ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:36:a3:32 brd ff:ff:ff:ff:ff:ffinet 192.168.5.133/24 brd 192.168.5.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.5.100/32 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::cf14:5db2:1b49:f0c2/64 scope link valid_lft forever preferred_lft forever

5.查看B機器日志

[root@localhost ~]# tail /var/log/messages Sep 3 23:46:52 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:52 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:52 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:52 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100

6.瀏覽器訪問vip,會看到已經變成backup機器上的了

7.在master機器(即A機器)啟動keepalived服務,會看到vip這個IP立刻回來了

[root@xuexi-001 ~]# systemctl start keepalived [root@xuexi-001 ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:b3:a2:bf brd ff:ff:ff:ff:ff:ffinet 192.168.5.130/24 brd 192.168.5.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.5.100/32 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.5.150/24 brd 192.168.5.255 scope global secondary ens33:0valid_lft forever preferred_lft foreverinet6 fe80::9625:3e1d:12c7:4fe6/64 scope link valid_lft forever preferred_lft forever 3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:b3:a2:c9 brd ff:ff:ff:ff:ff:ffinet6 fe80::44c4:9bed:dd1f:6c01/64 scope link valid_lft forever preferred_lft forever

8.查看B機器日志變化

[root@localhost ~]# tail /var/log/messages Sep 3 23:46:52 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:52 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:52 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:52 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 [root@localhost ~]# tail /var/log/messages Sep 3 23:46:52 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:46:57 localhost Keepalived_vrrp[1501]: Sending gratuitous ARP on ens33 for 192.168.5.100 Sep 3 23:50:01 localhost Keepalived_vrrp[1501]: VRRP_Instance(VI_1) Received advert with higher priority 100, ours 90 Sep 3 23:50:01 localhost Keepalived_vrrp[1501]: VRRP_Instance(VI_1) Entering BACKUP STATE Sep 3 23:50:01 localhost Keepalived_vrrp[1501]: VRRP_Instance(VI_1) removing protocol VIPs.

總結

  • 在生產環境中,可能會用到2-3臺backup角色, vim /etc/keepalived/keepalived.conf 這里面的權重調成不同級別,權重越高優先級越高!除了nginx服務的話,還可以做MySQL的高可用集群服務。(做mysql的高可用,一定要保證兩邊的數據一致)

LVS 介紹

  • LVS是由國人章文嵩開發
  • 流行度不亞于apache的httpd,基于TCP/IP做的路由和轉發,穩定性和效率很高
  • LVS最新版本基于Linux內核2.6,有好多年不更新了
  • LVS有三種常見的模式:NAT、DR、IP Tunnel
  • LVS架構中有一個核心角色叫做分發器(Load balance),它用來分發用戶的請求,還有諸多處理用戶請求的服務器(Real Server,簡稱rs)

LVS三種模式:

1、 LVS NAT模式

  • 這種模式借助iptables的nat表來實現
  • 用戶的請求到分發器后,通過預設的iptables規則,把請求的數據包轉發到后端的rs上去
  • rs需要設定網關為分發器的內網ip
  • 用戶請求的數據包和返回給用戶的數據包全部經過分發器,所以分發器成為瓶頸
  • 在nat模式中,只需要分發器有公網ip即可,所以比較節省公網ip資源
# 使用NAT 這種模式的請求量不能過大 一般十臺以內,超過十臺就有點力不從心了,除非機器配置很高,網卡是千兆網卡,萬兆光纖。

2、 LVS IP Tunnel模式

  • 這種模式,需要有一個公共的IP配置在分發器和所有rs上,我們把它叫做vip
  • 客戶端請求的目標IP為vip,分發器接收到請求數據包后,會對數據包做一個加工,會把目標IP改為rs的IP,這樣數據包就到了rs上
  • rs接收數據包后,會還原原始數據包,這樣目標IP為vip,因為所有rs上配置了這個vip,所以它會認為是它自己 [![]

3、LVS DR模式

  • 這種模式,也需要有一個公共的IP配置在分發器和所有rs上,也就是vip
  • 和IP Tunnel不同的是,它會把數據包的MAC地址修改為rs的MAC地址
  • rs接收數據包后,會還原原始數據包,這樣目標IP為vip,因為所有rs上配置了這個vip,所以它會認為是它自己

NAT模式搭建 – 準備工作

  • 三臺機器
  • 分發器,也叫調度器(簡寫為dir)
  • 內網:133.130,外網:142.147(vmware僅主機模式)
  • rs1
  • 內網:133.132,設置網關為133.130
  • rs2
  • 內網:133.133,設置網關為133.130
  • 三臺機器上都執行執行
  • systemctl stop firewalld; systemc disable firewalld
  • systemctl start iptables-services; iptables -F; service iptables save

  • 三臺機器
  • 分發器,也叫調度器(簡寫為dir)
  • 內網:5.130,外網:81.144(vmware僅主機模式)
  • rs1
  • 內網:5.133,設置網關為5.130
  • rs2
  • 內網:5.134,設置網關為5.130
  • 三臺機器上都執行執行
  • systemctl stop firewalld; systemc disable firewalld
  • systemctl start iptables-services; iptables -F; service iptables save

安裝iptables-services 每臺機器上都安裝

[root@xuexi-003 ~]# yum install -y iptables-services [root@xuexi-003 ~]# systemctl start iptables [root@xuexi-003 ~]# systemctl enable iptables Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service. [root@xuexi-003 ~]# iptables -F [root@xuexi-003 ~]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables: [ 確定 ]

#為什么要開啟iptables 服務,是因為要調用一個空規則,隨后需要配置一個新的規則出來,默認的規則可能影響到實驗效果。

然后還需要關閉selinux 所有的機器都需要更改

[root@xuexi-003 ~]# getenforce Disabled [root@xuexi-003 ~]# setenforce 0 setenforce: SELinux is disabled [root@xuexi-003 ~]# vi /etc/selinux/config 更改配置文件關閉selinux

1、安裝ipvsadm

[root@xuexi-001 ~]# yum install -y ipvsadm

2、在dir上編寫腳本,vim /usr/local/sbin/lvs_nat.sh //內容如下

配置文件內容 #! /bin/bash # director 服務器上開啟路由轉發功能,不開啟的話沒有辦法把數據傳輸到后面的rs上面 echo 1 > /proc/sys/net/ipv4/ip_forward # 關閉icmp的重定向 echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects # 注意區分網卡名字,兩個網卡分別為ens33和ens37 echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects # director 設置nat防火墻 iptables -t nat -F #清空iptables 規則 iptables -t nat -X #清空鏈 iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -j MASQUERADE #可以實現同網段的內網上網 # director設置ipvsadm IPVSADM='/usr/sbin/ipvsadm' $IPVSADM -C #清空規則 $IPVSADM -A -t 192.168.81.144:80 -s wlc -p 3 #設置一個規則 指定使用的什么規則(大規則) $IPVSADM -a -t 192.168.81.144:80 -r 192.168.5.133:80 -m -w 1 $IPVSADM -a -t 192.168.81.144:80 -r 192.168.5.134:80 -m -w 1 #具體的規則(小規則)

3、沒有輸出內容,說明配置沒有問題

[root@xuexi-001 ~]# sh /usr/local/sbin/lvs_nat.sh [root@xuexi-001 ~]#

4、

  • 兩臺rs上都安裝nginx
#rs1 [root@xuexi-002 ~]# systemctl start nginx [root@xuexi-002 ~]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 547/rpcbind tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1204/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 802/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1047/master tcp6 0 0 :::111 :::* LISTEN 547/rpcbind tcp6 0 0 :::80 :::* LISTEN 1204/nginx: master tcp6 0 0 :::22 :::* LISTEN 802/sshd tcp6 0 0 ::1:25 :::* LISTEN 1047/master tcp6 0 0 :::3306 :::* LISTEN 1045/mysqld #rs2 [root@xuexi-003 ~]# systemctl start nginx [root@xuexi-003 ~]# ps aux |grep nginx root 1200 0.0 0.2 120752 2088 ? Ss 23:39 0:00 nginx: master process /usr/sbin/nginx nginx 1201 0.0 0.3 121136 3116 ? S 23:39 0:00 nginx: worker process root 1204 0.0 0.0 112676 980 pts/0 R+ 23:39 0:00 grep --color=auto nginx [root@xuexi-003 ~]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 519/rpcbind tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1200/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 809/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1057/master tcp6 0 0 :::111 :::* LISTEN 519/rpcbind tcp6 0 0 :::80 :::* LISTEN 1200/nginx: master tcp6 0 0 :::22 :::* LISTEN 809/sshd tcp6 0 0 ::1:25 :::* LISTEN 1057/master tcp6 0 0 :::3306 :::* LISTEN 1015/mysqld
  • 設置兩臺rs的主頁,做一個區分,也就是說直接curl兩臺rs的ip時,得到不同的結果
#rs1 [root@xuexi-002 ~]# curl localhost backup.backup [root@xuexi-002 ~]# vi /usr/share/nginx/html/index.htmlxuexi-002 192.168.5.133

#rs2 [root@xuexi-003 ~]# curl localhost backup.backup [root@xuexi-003 ~]# vi /usr/share/nginx/html/index.htmlxuexi-003 192.168.5.134

  • 瀏覽器里訪問192.168.81.144,多訪問幾次看結果差異

可以在dir上更改一下規則,編輯配置文件vim /usr/local/sbin/lvs_nat.sh 將$IPVSADM -A -t 192.168.81.144:80 -s wlc -p 3 后面的-p 3 去掉

查看ipvsadm 設置的規則

[root@xuexi-001 ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.81.144:80 wlc-> 192.168.5.133:80 Masq 1 2 0 -> 192.168.5.134:80 Masq 1 0 4

測試

[root@xuexi-001 ~]# curl 192.168.81.144 xuexi-003 192.168.5.134 [root@xuexi-001 ~]# curl 192.168.81.144 xuexi-003 192.168.5.134 [root@xuexi-001 ~]# curl 192.168.81.144 xuexi-002 192.168.5.133 [root@xuexi-001 ~]# curl 192.168.81.144 xuexi-003 192.168.5.134 [root@xuexi-001 ~]# curl 192.168.81.144 xuexi-002 192.168.5.133 [root@xuexi-001 ~]# curl 192.168.81.144 xuexi-003 192.168.5.134 [root@xuexi-001 ~]# curl 192.168.81.144 xuexi-002 192.168.5.133 [root@xuexi-001 ~]# curl 192.168.81.144 xuexi-003 192.168.5.134 [root@xuexi-001 ~]# curl 192.168.81.144 xuexi-002 192.168.5.133 [root@xuexi-001 ~]# curl 192.168.81.144 xuexi-003 192.168.5.134

測試結果

Keepalived+LVS DR

  • 完整架構需要兩臺服務器(角色為dir)分別安裝keepalived軟件,目的是實現高可用,但keepalived本身也有負載均衡的功能,所以本次實驗可以只安裝一臺keepalived
  • keepalived內置了ipvsadm的功能,所以不需要再安裝ipvsadm包,也不用編寫和執行那個lvs_dir的腳本
  • 三臺機器分別為:
  • dir(安裝keepalived)133.130
  • rs1 133.132
  • rs2 133.133
  • vip 133.200
  • 編輯keepalived配置文件 vim /etc/keepalived/keepalived.conf//內容地址
  • 需要更改里面的ip信息
  • 執行ipvsadm -C 把之前的ipvsadm規則清空掉
  • systemctl restart network 可以把之前的vip清空掉
  • 兩臺rs上,依然要執行/usr/local/sbin/lvs_rs.sh腳本
  • keepalived有一個比較好的功能,可以在一臺rs宕機時,不再把請求轉發過去
  • 測試

1、因為之前做了NAT模式的現在需要做DR模式,需要將之前的rs1,rs2上面的網關更改回來

  • rs1 192.168.5.2
  • rs2 192.168.5.2

2、dir上編寫腳本 vim /usr/local/sbin/lvs_dr.sh //內容如下

(dir)分發器上的配置

[root@xuexi-001 ~]# vi /usr/local/sbin/lvs_dr.sh #! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward ipv=/usr/sbin/ipvsadm vip=192.168.5.200 rs1=192.168.5.133 rs2=192.168.5.134 ifdown ens33 ifup ens33 #注意這里的網卡名字 ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip dev ens33:2 $ipv -C $ipv -A -t $vip:80 -s wrr $ipv -a -t $vip:80 -r $rs1:80 -g -w 1 $ipv -a -t $vip:80 -r $rs2:80 -g -w 1 [root@xuexi-001 ~]# sh /usr/local/sbin/lvs_dr.sh 成功斷開設備 'ens33'。 連接已成功激活(D-Bus 活動路徑:/org/freedesktop/NetworkManager/ActiveConnection/3)

rs1

[root@xuexi-002 ~]# vi /usr/local/sbin/lvs_rs.sh#/bin/bash vip=192.168.5.200 #把vip綁定在lo上,是為了實現rs直接把結果返回給客戶端 ifdown lo ifup lo ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 #以下操作為更改arp內核參數,目的是為了讓rs順利發送mac地址給客戶端 #參考文檔www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html 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

rs2

[root@xuexi-003 ~]# vi /usr/local/sbin/lvs_rs.sh#/bin/bash vip=192.168.5.200 #把vip綁定在lo上,是為了實現rs直接把結果返回給客戶端 ifdown lo ifup lo ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 #以下操作為更改arp內核參數,目的是為了讓rs順利發送mac地址給客戶端 #參考文檔www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html 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

Keepalived+LVS DR

  • 完整架構需要兩臺服務器(角色為dir)分別安裝keepalived軟件,目的是實現高可用,但keepalived本身也有負載均衡的功能,所以本次實驗可以只安裝一臺keepalived
  • 為什么需要把keepalived 加到lvs 中的目的是什么?
  • 原因一:lvs,它有個關鍵角色,就是dir分發器,如果分發器宕掉,那所有的訪問就會被終止,因為所有的入口全都在dir分發器上,所以需要把分發器做一個高可用,用keepalived實現高可用,并且keepalived還有負載均衡的作用。
  • 原因二:在使用lvs的時候,如果沒有額外的操作,這時將一個rs機器關機(宕機)時,lvs照樣會分發數據到這臺宕機機器,這是就會出現訪問無效的情況,說明lvs并不聰明;這時使用keepalived,就可以保證集群中其中一臺rs宕機了,web還能正常提供,不會出現用戶訪問時無效鏈接的結果;一般這種架構,肯定是2臺keepalived;
  • 因為keepalived內置了ipvsadm的功能,所以不再需要安裝ipvsadm的包,也不用再編寫和執行.sh腳本

準備工作

1.準備三臺機器,分別為

  • dir(安裝keepalived)5.130
  • rs1 5.133
  • rs2 5.134
  • vip 5.200

2.在dir分發器(A機器)上,清空ipvsadm規則,并查看ipvsadm規則,會發現已經清空

[root@xuexi-001 ~]# ipvsadm -C [root@xuexi-001 ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn

3.在分發器(即A機器)上編輯配置文件,在/etc/keepalived/keepalived.conf 配置,配置文件內容

  • 因為之前做實驗里面編輯過配置文件,這時直接刪除,然后粘貼新的配置文件
  • 修改配置文件中的網卡、vip ,還有rs機器上的IP
[root@xuexi-001 ~]# vim /etc/keepalived/keepalived.confvrrp_instance VI_1 {#備用服務器上為 BACKUPstate MASTER#綁定vip的網卡為ens33,你的網卡和阿銘的可能不一樣,這里需要你改一下interface ens33virtual_router_id 51#備用服務器上為90priority 100advert_int 1authentication {auth_type PASSauth_pass aminglinux}virtual_ipaddress {192.168.5.200} } virtual_server 192.168.5.200 80 {#(每隔10秒查詢realserver狀態)delay_loop 10#(lvs 算法)lb_algo wlc#(DR模式)lb_kind DR#(同一IP的連接60秒內被分配到同一臺realserver)persistence_timeout 60#(用TCP協議檢查realserver狀態)protocol TCPreal_server 192.168.5.133 80 {#(權重)weight 100TCP_CHECK {#(10秒無響應超時)connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.5.134 80 {weight 100TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}}:wq

4.啟動keepalived服務,查看keepalived服務

[root@xuexi-001 ~]# systemctl start keepalived [root@xuexi-001 ~]# ps aux |grep keepalived root 1678 0.0 0.0 118652 1396 ? Ss 07:44 0:00 /usr/sbin/keepalived -D root 1679 0.0 0.1 127520 3332 ? S 07:44 0:00 /usr/sbin/keepalived -D root 1680 0.0 0.1 127388 2616 ? S 07:44 0:00 /usr/sbin/keepalived -D root 1685 0.0 0.0 112720 976 pts/0 S+ 07:44 0:00 grep --color=auto keepalived

5.查看IP,會看到虛擬IP依然存在

[root@xuexi-001 ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:b3:a2:bf brd ff:ff:ff:ff:ff:ffinet 192.168.5.130/24 brd 192.168.5.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.5.200/32 brd 192.168.5.200 scope global ens33:2 # 虛擬IP 依舊存在valid_lft forever preferred_lft foreverinet 192.168.5.150/24 brd 192.168.5.255 scope global secondary ens33:0valid_lft forever preferred_lft foreverinet6 fe80::9625:3e1d:12c7:4fe6/64 scope link valid_lft forever preferred_lft forever 3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:b3:a2:c9 brd ff:ff:ff:ff:ff:ffinet 192.168.81.144/24 brd 192.168.81.255 scope global ens37valid_lft forever preferred_lft foreverinet6 fe80::44c4:9bed:dd1f:6c01/64 scope link valid_lft forever preferred_lft forever

6.查看ipvsadm規則

[root@xuexi-001 ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.5.200:80 wlc

7.這時關閉keepalived服務,再來查看ip,會看到虛擬IP停掉了

[root@xuexi-001 ~]# systemctl stop keepalived [root@xuexi-001 ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:b3:a2:bf brd ff:ff:ff:ff:ff:ffinet 192.168.5.130/24 brd 192.168.5.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.5.150/24 brd 192.168.5.255 scope global secondary ens33:0valid_lft forever preferred_lft foreverinet6 fe80::9625:3e1d:12c7:4fe6/64 scope link valid_lft forever preferred_lft forever 3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:b3:a2:c9 brd ff:ff:ff:ff:ff:ffinet 192.168.81.144/24 brd 192.168.81.255 scope global ens37valid_lft forever preferred_lft foreverinet6 fe80::44c4:9bed:dd1f:6c01/64 scope link valid_lft forever preferred_lft forever

8.再來查看規則,會發現沒有啟動規則

[root@xuexi-001 ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn

9.這時啟動keepalived,再來查看規則

[root@xuexi-001 ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.5.200:80 wlc-> 192.168.5.133:80 Route 100 2 0 -> 192.168.5.134:80 Route 100 1 1

10.注意事項:兩點

  • 1.打開dir機器的端口轉發
echo 1 > /proc/sys/net/ipv4/ip_forward //打開端口轉發
  • 2.在rs機器上創建的/usr/local/sbin/lvs_rs.sh腳本,依然要執行它
#把vip綁定在lo上,是為了實現rs直接把結果返回給客戶端ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0#以下操作為更改arp內核參數,目的是為了讓rs順利發送mac地址給客戶端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

總結

  • keepalived 有一個比較好的功能,可以在一臺rs宕機的時候,及時把他踢出 ipvsadm 集群,將不再發送數據包給,也就很好的避免的訪問無連接的情況發送

轉載于:https://my.oschina.net/u/3850965/blog/1861510

總結

以上是生活随笔為你收集整理的第18章 Linux集群架构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。