前言
環境還是前面的環境,不斷擴大加深,大佬有補充的可以私聊小弟,向您學習!今天主要寫keepalived高可用和簡單配置一下4層負載均衡
實驗環境:
lb1的相關配置請參考:https://blog.csdn.net/weixin_43815140/article/details/105307716
這篇就不解釋lb1了,直接拿過來用了。
服務器 | 用途作用 |
---|---|
nginx,php(192.168.10.5) | 做web2節點服務器 ,做web2的php服務器 |
nginx,mysql(192.168.10.6) | 做web節點服務器,做web2的數據庫 |
nginx(192.168.10.2) | 做反向代理負載均衡服務器(lb1) |
mysql(192.168.10.4) | 做web1的數據庫 |
php(192.168.10.3) | 做web1的php服務器 |
nginx(192.168.10.7) | 做反向代理負載均衡服務器(lb2) |
測試機(192.168.10.1) | 測試訪問 |
簡單總結了一下四、七層負載均衡的區別:
4層負載是基於ip tcp/udp 端口號
等劃分
7層負載時基於HTTP https ftp SMTP
等協議劃分
現在很多高併發的網站僅依靠七層負載均衡已經處理的不是很理想,特別消耗資源等缺點,就開始延伸到四層負載均衡做進一細緻的劃分,可以應用到ip,tcp/udp以及常見的端口號。
目的:配置4層負載均衡,發佈內部服務器的ssh和mysql
編輯lb1負載均衡器的主配置文件,添加stream模塊,vim /etc/nginx/nginx.conf
插入數據到http字段上方:
stream {
upstream ssh {
server 192.168.10.5:22;
}
upstream mysql {
server 192.168.10.6:3306;
}
server {
listen 5555; #監聽映射端口
proxy_pass ssh; #代理轉發給ssh羣集
proxy_connect_timeout 30; #代理和後端服務器連接超時時間
proxy_timeout 60; #代理等待後端服務器的響應時間
}
server {
listen 7777;
proxy_pass mysql;
proxy_connect_timeout 30;
proxy_timeout 60;
}
}
使用xshell連接測試
[E:\~]$ ssh [email protected] 5555
Connecting to 192.168.10.2:5555...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
WARNING! The remote SSH server rejected X11 forwarding request.
Last failed login: Thu Apr 9 23:41:21 CST 2020 from 192.168.10.2 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Thu Apr 9 22:21:32 2020
[root@web2 ~]#
連接mysql,xshell不能去連接mysql,使用專門連接數據庫的工具Navicat
使用keepalived搭建高可用
高可用? 簡單說,增加容錯性
協議:VRRP(虛擬路由冗餘協議) 公有協議
HSRP(熱備份路由協議) 私有協議,Cisco公司
高可用軟件:
keepalived: 使用vrrp實現多臺主機高可用羣集
高可用角色:master
主服務器,backup
備服務器
目的:實現兩臺負載均衡器的高可用
環境:兩臺負載均衡器:lb1 lb2
lb1和lb2安裝keepalived
[root@lb1 ~]# yum -y install keepalived
[root@lb2 ~]# yum -y install keepalived
啓動服務:systemctl start keepalived
lb1做master,主服務器配置
vim /etc/keepalived/keepalived.conf
修改爲:
global_defs {
router_id lb1 //本路由器(服務器)的名稱
}
vrrp_instance VI_1 { //定義VRRP熱備實例
state MASTER //熱備狀態, MASTER表示主服務器
interface ens33 //承載VIP地址的物理接口
virtual_router_id 51 //虛擬路由器的ID號,每個熱備組保持一致
priority 100 //優先級,數值越大優先級越高
advert_int 1 //通告間隔秒數(心跳頻率)
authentication { //認證信息,每個熱備組保持一致
auth_type //認證類型
auth_pass 1111 //密碼字串
}
virtual_ipaddress {
192.168.10.100/24 //指定漂移地址(VIP),可以有多個
}
}
保存退出,重啓服務 systemctl restart keepalived
lb2做backup,備份服務器配置,爲了省事,scp過去修改一下
[root@lb2 ~]# scp root@192.168.10.2:/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
修改:
router_id lb1 ==> router_id lb2
state MASTER ==> state BACKUP
priority 100 ==> priority 99
保存退出,重啓服務,systemctl restart keepalived
查看虛擬ip(漂移ip地址)
漂移地址會在lb1上,lb2位備份。只要lb1故障,就會自動飄到lb2上
[root@lb1 ~]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:70:8f:23 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.2/24 brd 192.168.10.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.10.100/24 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::239c:c1af:44eb:612b/64 scope link
valid_lft forever preferred_lft forever
[root@lb1 ~]#
lb2如下:
[root@lb2 ~]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:fd:9f:7a brd ff:ff:ff:ff:ff:ff
inet 192.168.10.7/24 brd 192.168.10.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::98ea:c01:c77f:b852/64 scope link
valid_lft forever preferred_lft forever
在lb1上關閉keepalived,在查看VIP。
[root@lb2 ~]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:fd:9f:7a brd ff:ff:ff:ff:ff:ff
inet 192.168.10.7/24 brd 192.168.10.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.10.100/24 scope global secondary ens33
valid_lft forever preferred_lft forever
inet6 fe80::98ea:c01:c77f:b852/64 scope link
valid_lft forever preferred_lft forever
[root@lb2 ~]#
客戶機192.168.10.1 ping blog.benet.com時,使lb1停止,觀察
訪問網站正常而且和web2是負載均衡的
keepalived高可用,高冗餘性已經試驗完成。