一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

docker Nginx LVS keepalived搭建分布式雙機(jī)主從熱備

 15所 2022-01-08

概述

準(zhǔn)備在虛擬機(jī)的centos7上搭建搭建docker+Nginx+LVS+keepalived搭建分布式雙機(jī)主從熱備,其架構(gòu)圖如下
雙機(jī)主從熱備圖

安裝docker(如已經(jīng)安裝,請忽略)

yum install docker #該命令安裝過程中的提示一律填 y 再回車即可

安裝好docker后設(shè)置docker開機(jī)啟動(dòng)

systemctl start docker.service
systemctl enable docker.service

設(shè)置docker開機(jī)啟動(dòng)

docker 里面安裝Nginx

直接拿最新的nginx鏡像

docker pull nginx

鏡像是否成功下載使用下面命令查看是否存在nginx鏡像

docker images

查看Nginx是否成功下載
切換到當(dāng)前用戶跟目錄,然后建立一個(gè)nginx目錄,并在nginx目錄下新建nginx_master和nginx_backup; 然后分別在這兩個(gè)文件夾下建立conf, logs, html 三個(gè)文件夾(這里之所以要建立nginx_backup是因?yàn)榉奖愕綍r(shí)候虛擬機(jī)克隆,也可以不建立nginx_backup)
建立nginx_master及其子目錄
建立nginx_backup及其子目錄
先建立啟動(dòng)一個(gè)nginx容器

docker run -d --name nginx nginx

切換目錄到nginx_master目錄下,然后將docker下的nginx 容器的nginx.conf和conf.d文件copy到nginx_master nginx_backup的conf下

docker cp nginx:/etc/nginx/nginx.conf $PWD/conf
docker cp nginx:/etc/nginx/conf.d $PWD/conf

復(fù)制完成后刪除剛才啟動(dòng)nginx容器

docker stop nginx
docker rm nginx
docker ps -a

復(fù)制完成后在nginx_master目錄下查看復(fù)制完成后的目錄結(jié)構(gòu)

ll $PWD/*

查看nginx_master目錄結(jié)構(gòu)
在nginx_master/html目錄下新建一個(gè)index.html文件,隨便輸入文字
index.html文件內(nèi)容
關(guān)閉防火墻

systemctl stop firewalld.service

禁止防火墻開機(jī)啟動(dòng)

systemctl disable firewalld.service

確保文件創(chuàng)建好后,就可以按照下面命令創(chuàng)建nginx容器

docker run -d -p 80:80                -p 443:443   --name nginx_master  --restart=always  --privileged=true  -v /root/nginx/nginx_master/html:/usr/share/nginx/html  -v /root/nginx/nginx_master/conf/nginx.conf:/etc/nginx/nginx.conf  -v /root/nginx/nginx_master/conf/conf.d:/etc/nginx/conf.d  -v /root/nginx/nginx_master/logs:/var/log/nginx  nginx

# 以上是命令,下面是命令的解析
-d # 表示在一直在后臺(tái)運(yùn)行容器
-p 80:80 # 對端口進(jìn)行映射,將本地80端口映射到容器內(nèi)部的80端口
--name # 設(shè)置創(chuàng)建的容器名稱
-v # 將本地目錄(文件)掛載到容器指定目錄;
--restart=always是重啟策略,當(dāng)docker服務(wù)重啟后,容器也會(huì)自動(dòng)啟動(dòng)(必須,否則后面啟動(dòng)虛擬機(jī),需要手動(dòng)啟動(dòng)nginx)
--privileged=true  使創(chuàng)建的容器擁有root權(quán)限(必須,沒有的話,啟動(dòng)nginx報(bào)錯(cuò),說沒有權(quán)限)

如果啟動(dòng)的時(shí)候不帶上 –privileged=true,會(huì)出現(xiàn) nginx: [alert] could not open error log file: open() “/var/log/nginx/error.log” failed (13: Permission denied)
不帶上--privileged=true啟動(dòng)nginx報(bào)錯(cuò)
啟動(dòng)完查看容器的啟動(dòng)狀態(tài)是否正常

docker ps -a 

啟動(dòng)和查看狀態(tài)
啟動(dòng)完,訪問nginx_master的nginx,看看是否能訪問到index.html的內(nèi)容
查看是否啟動(dòng)成功訪問nginx

安裝keepalived

安裝命令

yum install keepalived -y

查看是否安裝成功,使用如下命令能看到版本號(hào),表示成功

rpm -q -a keepalived

查看keepalived是否安裝成功
使用yum命令安裝keepalived成功后,在/etc/keepalived目錄下有keepalived.conf配置文件,高可用配置就是主要配置該文件
keepalived.conf文件位置
主機(jī)的keepalived.conf的配置內(nèi)容如下

! Configuration File for keepalived

global_defs {
   notification_email {
     xuad@xuad.com
   }
   notification_email_from root@xuad.com
   smtp_server mail.xuad.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 '/root/keepalived/nginx_check.sh'   # 檢查nginx狀態(tài)的腳本
    interval 2
    weight 3
}

vrrp_instance VI_1 {
    state MASTER     #備份服務(wù)器上將MASTER改為BACKUP
    interface ens33	#這個(gè)需要根據(jù)你服務(wù)器的網(wǎng)卡進(jìn)行選擇,我這里是ens33
    virtual_router_id 51	#這個(gè)id必須與備機(jī)的id一樣
    priority 100       #備份服務(wù)上將100改為小于100,可配置成90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.247.120    #這個(gè)IP前三位最后與服務(wù)器的IP前三位相同,有多個(gè)vip可在下面繼續(xù)增加
    }
    track_script {
        chk_nginx
    }
}

切換到當(dāng)前用戶目錄空間,建立一個(gè)keepalived目錄,這個(gè)目錄存放的是nginx是否正常啟動(dòng)的檢測腳本
創(chuàng)建keepalived目錄
進(jìn)入keepalived目錄,創(chuàng)建nginx_check.sh文件,文件內(nèi)容如下

#!/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

# 腳本說明:當(dāng)nginx進(jìn)程不存在時(shí),會(huì)自動(dòng)重啟docker服務(wù),docker服務(wù)啟動(dòng)時(shí)會(huì)自動(dòng)啟動(dòng)nginx容器;再次檢查nginx進(jìn)程,如果不存在,就停止keepalived服務(wù),然后NGINX_BACKUP主機(jī)會(huì)自動(dòng)接替NGINX_MASTER的工作。

腳本創(chuàng)建完成后,必須給腳本賦予可以執(zhí)行的權(quán)限,這里為了方便直接給所有權(quán)限

chmod 777 nginx_check.sh

啟動(dòng)keepalived并查看其狀態(tài)

systemctl start keepalived
systemctl status keepalived

查看keepalived是否啟動(dòng)成功

克隆主機(jī)成為備機(jī)

關(guān)閉虛擬機(jī),對主機(jī)進(jìn)行克隆
主機(jī)克隆
克隆完成后,選擇克隆出來的備機(jī)需要改變下MAC地址 重要
刷新MAC地址描述
開啟備機(jī)服務(wù)器,然后修改備機(jī)的hostname,將備機(jī)的hostname改成salve或者backup都可以,修改完成重啟備機(jī)

hostnamectl set-hostname salve

由于是從主機(jī)克隆來的,所以主機(jī)的docker和keepalived、Nginx都已經(jīng)有了,主要對 /etc/keepalived/keepalived.conf 文件進(jìn)行進(jìn)行一定修改就好;另外的nginx容器也可以重新建立一個(gè),命名為:nginx_salve;最后啟動(dòng)主機(jī)和備機(jī)兩臺(tái)服務(wù)機(jī),分別查看keepalived的狀態(tài)是否都啟動(dòng)了,沒有啟動(dòng)就啟動(dòng)

systemctl status keepalived

查看兩臺(tái)機(jī)器的keepalived狀態(tài)
當(dāng)master節(jié)點(diǎn)沒有宕機(jī)的情況,訪問的是master節(jié)點(diǎn)下的nginx,當(dāng)出現(xiàn)宕機(jī)的情況下訪問的是backup節(jié)點(diǎn)下的nginx
訪問的是master節(jié)點(diǎn)
將主機(jī)關(guān)機(jī),造成主機(jī)宕機(jī)現(xiàn)象,就訪問了備機(jī)的nginx
備機(jī)訪問

至此使用docker搭建的雙機(jī)主從熱備環(huán)境就搭建好了,如有問題,評論區(qū)留言

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩少妇人妻中文字幕| 欧美一区二区三区五月婷婷| 国产欧美一区二区色综合| 成人欧美精品一区二区三区| 中文字幕亚洲精品人妻| 日韩精品免费一区二区三区| 亚洲天堂精品在线视频 | 成人免费观看视频免费| 欧美日韩国产精品黄片| 视频在线播放你懂的一区| 欧美人妻少妇精品久久性色 | 中国一区二区三区不卡| 国产又粗又黄又爽又硬的| 日本深夜福利视频在线| 国产欧美日韩视频91| 国产二级一级内射视频播放| 国产熟女高清一区二区| 国产精品欧美一级免费| 中文字幕精品少妇人妻| 91麻豆精品欧美一区| 精品视频一区二区三区不卡| 欧美一级黄片免费视频| 午夜福利92在线观看| av中文字幕一区二区三区在线| 国产国产精品精品在线| 国产精品99一区二区三区| 精品熟女少妇一区二区三区| 精品国产亚洲av久一区二区三区| 超碰在线播放国产精品| 国产av天堂一区二区三区粉嫩 | 日本久久精品在线观看| 亚洲一区二区三区熟女少妇| 国产亚洲成av人在线观看| 欧美日韩中黄片免费看| 国产精品久久香蕉国产线 | 自拍偷女厕所拍偷区亚洲综合| 精品久久久一区二区三| 国产一区欧美一区二区| 日韩亚洲精品国产第二页| 日韩欧美国产精品自拍| 国产91色综合久久高清|