架構——keepalived高可用篇和四層負載均衡的配置

前言

環境還是前面的環境,不斷擴大加深,大佬有補充的可以私聊小弟,向您學習!今天主要寫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高可用,高冗餘性已經試驗完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章