中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

發布時間:2020-04-20 17:00:58 來源:億速云 閱讀:914 作者:三月 欄目:云計算

下文給大家帶來實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的,希望能夠給大家在實際運用中帶來一定的幫助,負載均衡涉及的東西比較多,理論也不多,網上有很多書籍,今天我們就用億速云在行業內累計的經驗做一個解答。

本次實驗中需要使用到四臺主機:
四臺虛擬機上安裝的都是centos7.6操作系統

主機名ip功能
nginx_master192.168.8.128負載均衡,健康檢查
nginx_backup192.168.8. 129nginx_master的小弟
web1192.168.8.126提供web服務
web2192.168.8.127提供web服務

說簡單點,小弟的作用就是在大哥有危難之際,替大哥挨刀的。當nginx_master出現故障時,nginx_backup就代替nginx_master正常工作。
另外還有一個虛擬 ip:192.168.8.242
keepalived可以將多個無狀態的單點通過虛擬IP(VIP)漂移的方式搭建成一個高可用服務。

一、負載均衡云服務器nginx的配置
nginxmaster和nginxbackup上都需要進行以下操作

1、docker安裝
安裝yum-utils,它提供一個yum-config-manager單元,同時安裝的device-mapper-persistent-data和lvm2用于儲存設備映射(devicemapper)必須的兩個軟件包。

yum install -y yum-utils device-mapper-persistent-data lvm2

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
緊接著配置一個穩定(stable)的倉庫 
倉庫配置會保存到/etc/yum.repos.d/docker-ce.repo文件中。
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
生成元數據
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
安裝docker-ce
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
2、 配置deamon.json和nginx.conf文件
編輯daemon.json文件,填寫阿里云鏡像倉庫的地址并指定docker數據存儲目錄
vim daemon.json。

{ "registry-mirrors": ["你的阿里鏡像倉庫地址"], "graph": "/data/docker" }

重新加載daemon,重啟docker服務。

[root@localhost docker]# systemctl daemon-reload
[root@localhost docker]# systemctl restart docker

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

把docker加入開機啟動

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

拉取一個nginx鏡像

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

創建nginx配置文件目錄,啟動一個nginx-c容器并把容器里的nginx.conf拷貝到本地

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

刪除容器nginx-c
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
這兩步就是在nginx容器的配置文件的基礎上修改參數,以實現想要的功能。

3、創建nginx容器并對其進行配置

(1)編寫創建nginx容器的腳本

#!/bin/bash
docker run --name nginx --restart=always -p 80:80 \
-v /data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /data/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /data/docker/nginx/html:/usr/share/nginx/html \
-v /data/docker/nginx/logs:/var/log/nginx \
-d nginx:latest

注:--restart=always是重啟策略,當docker服務重啟后,容器也會自動啟動

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

(2)  賦予腳本執行權限 并運行

chmod +x docker_nginx.sh
sh docker_nginx.sh

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

(3)修改nginx主配置文件

vim /data/docker/nginx/conf/nginx.conf

修改前
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
修改后
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

(4) 創建upstream配置文件

vim /data/docker/nginx/conf/conf.d/myhost.conf
upstream xuad {
ip_hash; #會話保持
server 192.168.2.226 max_fails=1 fail_timeout=60s;
server 192.168.2.227 max_fails=1 fail_timeout=60s;
}
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

(5)  創建虛擬主機配置文件

vim /data/docker/nginx/conf/conf.d/xuad.conf
server {
listen     80;
server_name  localhost;
#charset GB2312;
location /
{
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://lxc;
}

#查看nginx的并發連接數配置

location /NginxStatus
{
stub_status on;
access_log off;
auth_basic "NginxStatus"; } access_log off;
error_page 404 /404.html;
error_page 500 502 503 504 /404.html;
location = /404.html {
root    html;
}
limit_conn perip 200; #同一ip并發數為200,超過會返回503
}

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
(6)重啟nginx容器
docker restart nginx

二、負載均衡服務器keepalived的配置
nginxmaster和nginxbackup上都需要進行以下操作
1 下載并安裝keepalived

分別在NGINX_MASTER、NGINX_BACKUP兩臺服務器上操作
注:keepalived安裝在實體機上
yum install wget make gcc gcc-c++ openssl-devel
wget http://www.keepalived.org/software/keepalived-2.0.7.tar.gz
tar zxvf keepalived-2.0.7.tar.gz
cd keepalived-2.0.7
./configure --prefix=/data/keepalived

如果報以下警告:
WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
不用擔心,我們只需要用到VRRP功能,不需要用IPVS功能,所以請確保以下三項是yes就行了。

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

編譯
make
make install

2、將keepalived 以服務方式啟動
創建/etc/keepalived目錄并把keepalived的配置文件拷貝/etc/keepalived目錄下并加入到開機啟動。

mkdir /etc/keepalived
cp /data/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ systemctl enable keepalived

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

3、 修改keepalived配置文件

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
lxc@lxc.com
}
notification_email_from root@lxc.com
smtp_server mail.lxc.com
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_pid.sh" # 檢查nginx狀態的腳本
interval 2
weight 3
}
vrrp_instance VI_1 {
state MASTER #備份服務器上將MASTER改為BACKUP
interface ens32 virtual_router_id 51 priority 100 #備份服務上將100改為小于100,可配置成90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.242 #有多個vip可在下面繼續增加
}
track_script {
chk_nginx
}
}

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

4、添加檢查nginx狀態的腳本

vim /etc/keepalived/nginx_pid.sh
#!/bin/bash
#version 0.0.1
A=ps -C nginx --no-header |wc -l
if [ $A -eq 0 ];then
systemctl restart docker
sleep 3
if [ ps -C nginx --no-header |wc -l -eq 0 ];then
systemctl stop keepalived
fi
fi

腳本說明:當nginx進程不存在時,會自動重啟docker服務,docker服務啟動時會自動啟動nginx容器;再次檢查nginx進程,如果不存在,就停止keepalived服務,然后NGINX_BACKUP主機會自動接替NGINX_MASTER的工作。

chmod +x /etc/keepalived/nginx_pid.sh

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

5、配置firewalld防火墻允許vrrp協議

VRRP(Virtual Router Redundancy Protocol,虛擬路由器冗余協議)
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.8.129" protocol value="vrrp" accept"
firewall-cmd --reload

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
如果是backup服務器,source address改成master服務器的IP
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

6 、啟動keepalived

systemctl start keepalived

三、 配置時間同步

在NGINX_MASTER和NGINX_BACKUP上安裝ntp

yum -y install ntp

在NGINX_MASTER上修改ntp配置文件
添加以下兩行。

vim /etc/ntp.conf
server 127.127.1.0 iburst local clock #添加使用本地時間 restrict 192.168.8.0 mask 255.255.255.0 nomodify #允許更新的IP地址段
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
在NGINX_MASTER上啟動ntp服務,并加入開機啟動
systemctl start ntpd systemctl enable ntpd

在NGINX_MASTER上添加防火墻策略
只允許192.168.8.129訪問ntp服務。
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

在NGINX_BACKUP上同步NGINX_MASTER的時間

ntpdate 192.168.8.128

實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

在NGINX_BACKUP上設置計劃任務
每天凌晨5點01分同步時間。

crontab -e 1 5 * /usr/sbin/ntpdate 192.168.8.128 >> /var/log/upClock.log

四、負載均衡服務器測試

1、測試nginx服務器
(1)當NGINX_MASTER、NGINX_BACKUP服務器nginx均正常工作時查看VIP
在NGINX_MASTER上
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
在NGINX_BACKUP上
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
master服務器ens32網卡正常綁定VIP,而backup卻沒有綁定,通過瀏覽器可正常訪問網站。

(2)關閉NGINX_MASTER的nginx容器
當nginx容器停止后,馬上就又啟起來了,nginx啟動腳本沒問題
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
(3)關閉NGINX_MASTER的keepalived服務
在NGINX_MASTER上。
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
在NGINX_BACKUP上
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

NGINX_BACKUP的ens32網卡已瞬間綁定VIP,通過瀏覽器訪問網站正常。
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
(4)將NGINX_MASTER的keepalived服務啟動
在NGINX_MASTER上
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
在NGINX_BACKUP上
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
NGINX_MASTER的ens32網卡重新綁定VIP,通過瀏覽器訪問網站正常。
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

2、測試WEB服務器

關閉WEB_1服務器
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的
通過瀏覽器訪問網站正常。
實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的

 看了以上關于實驗keepalived+nginx+docker是如何實現負載均衡高可用服務的,如果大家還有什么地方需要了解的可以在億速云行業資訊里查找自己感興趣的或者找我們的專業技術工程師解答的,億速云技術工程師在行業內擁有十幾年的經驗了。

 

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

渝中区| 宣城市| 金阳县| 响水县| 新化县| 蓬安县| 宁明县| 天门市| 长宁区| 苍南县| 乌海市| 黄梅县| 雷山县| 财经| 阜平县| 莱芜市| 布尔津县| 山阴县| 商都县| 涞源县| 庆安县| 南宫市| 大兴区| 锡林郭勒盟| 黄骅市| 台北县| 红安县| 固安县| 黄陵县| 舞钢市| 山阴县| 砚山县| 巴彦县| 思茅市| 读书| 望城县| 无极县| 泸州市| 中超| 茂名市| 西安市|