1,手動添加vip
1,ifconfig查看當前活動網卡。如:eth0
2,執行
ifconfig eth0:0 166.111.69.100 netmask 255.255.255.0 up
進行vip添加
3,執行ifconfig查看是否生效
4,測試 ping 166.111.69.100
5,寫在/etc/rc.local里進行開機自動設置
2,第三方工具keepalived增加vip
1,下載與安裝
安裝:
tar xf keepalived-1.2.12.tar.gz
cd keepalived-1.2.12
./configure --prefix=/usr/local/keepalived
make && make install
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
2,配置:
vim
/etc/keepalived/keepalived.conf 如下:
! Configuration File for keepalived
global_defs {
notification_email {
saltstack@163.com
}
notification_email_from dba@dbserver.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MySQL-HA
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 150
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.88
}
}
紅色區域為需要修改的地方:
notification_email :變更后通知的email
notification_email_from :發送email
router_id MySQL-HA :路由器組id,局域網中需要共享該vip的服務器,該配置要一致。
state BACKUP:在keepalived中2種模式,
分別是master->backup模式和backup->backup模式。
這兩種模式有很大區別。
在master->backup模式下,一旦主庫宕機,虛擬ip會自動漂移到從庫,當主庫修復后,keepalived啟動后,還會把虛擬ip搶占過來,即使設置了非搶占模式(nopreempt)搶占ip的動作也會發生。
在backup->backup模式下,當主庫宕機后虛擬ip會自動漂移到從庫上,當原主庫恢復和keepalived服務啟動后,並不會搶占新主的虛擬ip,即使是優先級高於從庫的優先級別,也不會發生搶占。
interface eth1:具體網卡,通過ifconfig確認具體網卡。
priority 150:表示設置的優先級為150
nopreempt:非搶占模式
啟動:
/etc/init.d/keepalived start ; tail -f /var/log/messages
顯示如下表示成功:
Starting keepalived: [ OK ]
Apr 20 20:26:18 192 Keepalived_vrrp[9472]: Registering gratuitous ARP shared channel
Apr 20 20:26:18 192 Keepalived_vrrp[9472]: Opening file '/etc/keepalived/keepalived.conf'.
Apr 20 20:26:18 192 Keepalived_vrrp[9472]: Configuration is using : 62976 Bytes
Apr 20 20:26:18 192 Keepalived_vrrp[9472]: Using LinkWatch kernel netlink reflector...
Apr 20 20:26:18 192 Keepalived_vrrp[9472]: VRRP_Instance(VI_1) Entering BACKUP STATE
Apr 20 20:26:18 192 Keepalived_vrrp[9472]: VRRP sockpool: [ifindex(3), proto(112), unicast(0), fd(10,11)]
Apr 20 20:26:18 192 Keepalived_healthcheckers[9471]: Netlink reflector reports IP 192.168.80.138 added
Apr 20 20:26:18 192 Keepalived_healthcheckers[9471]: Netlink reflector reports IP 192.168.0.60 added
Apr 20 20:26:18 192 Keepalived_healthcheckers[9471]: Netlink reflector reports IP fe80::20c:29ff:fe9d:6a9e added
Apr 20 20:26:18 192 Keepalived_healthcheckers[9471]: Netlink reflector reports IP fe80::20c:29ff:fe9d:6aa8 added
Apr 20 20:26:18 192 Keepalived_healthcheckers[9471]: Registering Kernel netlink reflector
Apr 20 20:26:18 192 Keepalived_healthcheckers[9471]: Registering Kernel netlink command channel
Apr 20 20:26:18 192 Keepalived_healthcheckers[9471]: Opening file '/etc/keepalived/keepalived.conf'.
Apr 20 20:26:18 192 Keepalived_healthcheckers[9471]: Configuration is using : 7231 Bytes
Apr 20 20:26:18 192 kernel: IPVS: Registered protocols (TCP, UDP, AH, ESP)
Apr 20 20:26:18 192 kernel: IPVS: Connection hash table configured (size=4096, memory=64Kbytes)
Apr 20 20:26:18 192 kernel: IPVS: ipvs loaded.
Apr 20 20:26:18 192 Keepalived_healthcheckers[9471]: Using LinkWatch kernel netlink reflector...
測試:
1,ping命令測試。
2,一台服務器停止keepalived服務進行ip漂移測試。
一、虛擬IP介紹
虛擬IP即VIP,這只是一個概念而已,可能會誤導你,實際上就是heartbeat臨時綁定在物理網卡上的別名(heartbeat3以上頁采用了輔助IP),如eth0:x ,x為0-255的任意數字,你可以在一塊網卡上綁定多個別名。這個VIP可以看作是你上網的QQ網名、昵稱、外號等。
在實際生產環境中,需要在DNS配置中把網站域名地址解析到這個VIP地址,由這個VIP對用戶提供服務。如:把www.zhangcong.top解析到VIP 1.1.1.1 上。
這樣做的好處就是當提供服務的服務器宕機以后,在接管的服務器上會直接自動配置上同樣的VIP提供服務。如果是使用管理IP的話,來回遷移就難以做到,而且,管理IP遷移走了,我們就只能去機房連接服務器了,
VIP 的實質就是確保兩台服務器有一個管理IP不動,就是隨時可以連上服務器,然后增加綁定其他的VIP,這樣就算VIP轉移走了,也不至於服務器本身連不上,因為還有管理IP可以使用。
Linux系統給網卡配置VIP的方法常見的有兩種,即別名IP(alias ip)以及輔助IP(secondary ip address)。
二、別名IP(alias ip)
ip alias 是由 Linux 系統的 ifconfig 命令來創建和維護的,別名IP就是在網卡設備上綁定的第二個及以上的IP,例如:
1)手工配置別名VIP的方法
# 使用下面兩種方法都可以
[root@crazy-acong ~]# ifconfig eth0:1 192.168.40.20 netmask 255.255.255.0 up
[root@crazy-acong ~]# ifconfig eth0:1 192.168.40.20/24 up # heartbeat軟件默認是使用這個命令來添加的
2)手動查看VIP別名的方法
# 使用別名的方法配置的VIP可以通過ifconfig查看,也可以通過ip addr 查看
[root@crazy-acong ~]# ifconfig eth0:1
eth0:1 Link encap:Ethernet HWaddr 00:0C:29:2C:5C:43
inet addr:192.168.40.20 Bcast:192.168.40.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
# 提示:這個ip就是啟動heartbeat服務時,由heartbeat調用相關腳本配置的
3)手工刪除別名VIP的方法
# 使用下面兩種方法都可以
[root@crazy-acong ~]# ifconfig eth0:1 192.168.40.20 netmask 255.255.255.0 down
[root@crazy-acong ~]# ifconfig eth0:1 down
4)讓別名IP永久生效
# 寫入到網卡配置文件可以讓別名IP永久生效,名字可以為ifcfg-eth0:x,x為0-255的任意數字,IP等內容格式和ifcfg-eth0一致,或者將命令寫入/etc/rc.local
注意:別名IP將被遺棄,用輔助IP替代
三、輔助IP(secondary ip address)
輔助IP則是由Linux系統的ip命令創建和維護的,
ip addr add 創建的輔助IP,不能通過ifconfig查看。
但是通過ifconfig創建的別名IP卻可以在ip addr show 命令查看。
1)手工配置輔助VIP的方法:
[root@crazy-acong ~]# ip addr add 192.168.40.20/24 dev eth0
# keepalived 軟件默認使用這個命令來添加VIP,也是heartbeat3軟件采用的方案# ip add 可以查看別名和輔助IP,用ifconfig無法查到輔助IP配置情況
2)手工查看VIP別名的方法
不同的命令配置的VIP查看方法也是由區別的,
使用輔助IP的方法配置的VIP,不能通過ifconfig查看,只能通過 ip addr 來查看
使用輔助IP的方法配置的VIP,可以通過ip addr 查看
[root@crazy-acong ~]# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:2c:5c:43 brd ff:ff:ff:ff:ff:ff
inet 192.168.40.10/24 brd 192.168.40.255 scope global eth0
inet 192.168.40.20/24 scope global secondary eth0
# ip addr show 、 ip addr 、 ip add 這三個命令的結果都是一樣的
3)手工刪除輔助IP的方法
[root@crazy-acong ~]# ip addr del 192.168.40.20/24 dev eth0
提示: heartbeat 和 keepalived 在啟動時就是分別利用上面命令來配置VIP的。在停止時利用下面的命令來刪除VIP。以上兩種方式配置VIP,在高可用環境中的作用是一樣的,沒什么區別,只是由於當時的系統環境等歷史原因,選擇的配置命令方式不同。
heartbeat3 版本起,不在使用別名,而是使用輔助IP提供服務,
而 keepalived 軟件一直都是使用的輔助IP技術。
總結:
1、從heartbeat3.0開始,創建VIP的方式為手工配置別名的方式。
2、Keepalived軟件創建VIP使用的是輔助IP技術。
3、(heartbeat3.0-)手工配置別名的方式:ifconfig eth0:1 192.168.40.20 netmask 255.255.255.0 up
4、(keepalived)輔助IP的方式:ip addr add 192.168.40.20/24 dev eth0
5、VIP(虛擬IP)根物理網卡是綁定的。
6、以上總結是heartbeat和keepalived高可用軟件創建VIP的區別,在配置vip的時候,避免錯誤。
① 首先查看一下現有網卡的IP地址,用root特權運行下面的命令:
ip addr
示例輸出:
從上面的詳細信息中,可以看到服務器的網卡名是eno16777736,ip地址是192.168.22.227。
網卡的配置文件存儲在 /etc/sysconfig/network-scripts/ 目錄下。每個網卡的詳細內容將會以不同的名字存儲,比如ifcfg-eno16777736。
② 打開此配置文件,並且再添加一個IP地址
編輯文件 /etc/sysconfig/network-scripts/ifcfg-eno16777736:
vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
像下面那樣加入額外的IP地址。
這樣就添加了一個IP地址:IPADDR1=”192.168.22.231″當然,也可以添加更多的ip地址。?
IPADDR2=”192.168.22.232″…
最后,保存並退出文件。快捷鍵:shift+z+z
重啟網絡服務來使更改生效。
systemctl restart network
③ 檢查一下是否已經加入了ip地址。
輸入命令:
ip addr
示例輸出:
這里我們創建兩個虛擬機環境,IP地址分別為192.168.209.121和192.168.209.122,如下圖所示:
在192.168.209.122上添加一個VIP地址為:192.168.209.22,執行如下命令:
ifconfig eth0:1 192.168.209.22 broadcast 192.168.209.255 netmask 255.255.255.0 up
eth0:1表示這個VIP綁定的目標網卡設備,192.168.209.22就是VIP的值,廣播地址為192.168.209.255,子網掩碼為:255.255.255.0,up表示立即啟用這個VIP。
接着我們通過route命令,在路由表上添加對這個VIP的路由信息
route add -host 192.168.209.22 dev eth0:1
此時,我們在192.168.209.121這台虛擬機上執行ifconfig命令如下: