欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker+keepalived+nginx實(shí)現(xiàn)主從熱備的方法示例

 更新時(shí)間:2019年11月10日 11:58:25   作者:江湖救急  
這篇文章主要介紹了Docker+keepalived+nginx實(shí)現(xiàn)主從熱備的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

為解決單點(diǎn)故障,我們需要配置主從熱備方案,服務(wù)器數(shù)量有限,故使用Docker模擬安裝配置。

本次配置默認(rèn)已經(jīng)安裝了Docker。

配置環(huán)境:centos7 64位

docker版本:Docker version 17.12.1-ce, build 7390fc6

1,拉取centos7鏡像

docker pull centos:7

2,創(chuàng)建容器

docker run -it -d --name centos1 -d centos:7

3,進(jìn)入容器centos1

docker exec -it centos1 bash

4,安裝常用工具

yum updateyum install -y vimyum install -y wgetyum install -y gcc-c++ yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl--develyum install -y popt-develyum install -y initscripts
yum install -y net-tools

5,將容器打包成新的鏡像,以后直接以該鏡像創(chuàng)建容器

docker commit -a 'cfh' -m 'centos with common tools' centos1 centos_base

6,刪除之前創(chuàng)建的centos1 容器,重新以基礎(chǔ)鏡像創(chuàng)建容器,安裝keepalived+nginx

docker rm -f centos1
#容器內(nèi)需要使用systemctl服務(wù),需要加上/usr/sbin/init
docker run -it --name centos_temp -d --privileged centos_base /usr/sbin/init
docker exec -it centos_temp bash

作者:江湖救急
鏈接:https://juejin.im/post/5dc517386fb9a04a9272110b
來源:掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

7,安裝nginx

#使用yum安裝nginx需要包括Nginx的庫,安裝Nginx的庫
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 使用下面命令安裝nginx
yum install -y nginx
#啟動(dòng)nginx
systemctl start nginx.service
#查看是否啟動(dòng)成功,出現(xiàn)nginx歡迎界面表示安裝成功
curl 172.17.0.2

8,安裝keepalived

1.下載keepalived wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz

2.解壓安裝:tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/

3.下載插件openssl yum install -y openssl openssl-devel(需要安裝一個(gè)軟件包)

4.開始編譯keepalivedcd /usr/local/keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived

5.make一下 make && make install

9,將keepalived 安裝成系統(tǒng)服務(wù)

mkdir /etc/keepalivedcp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/然后復(fù)制keepalived腳本文件:cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ln -s /usr/local/sbin/keepalived /usr/sbin/可以設(shè)置開機(jī)啟動(dòng):chkconfig keepalived on,到此我們安裝完畢!

#若啟動(dòng)報(bào)錯(cuò),則執(zhí)行下面命令
cd /usr/sbin/ 
rm -f keepalived 
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ 

#常用命令
systemctl daemon-reload 重新加載systemctl enable keepalived.service 設(shè)置開機(jī)自動(dòng)啟動(dòng)systemctl disable keepalived.service 取消開機(jī)自動(dòng)啟動(dòng)systemctl start keepalived.service 啟動(dòng)systemctl stop keepalived.service停止systemctl status keepalived.service 查看服務(wù)狀態(tài)

10,修改/etc/keepalived/keepalived.conf文件

#備份配置文件
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.backup

rm -f keepalived.conf
vim keepalived.conf
#配置文件如下

vrrp_script chk_nginx {
  script "/etc/keepalived/nginx_check.sh"
  interval 2
  weight -20
}

vrrp_instance VI_1 {
  state MASTER
  interface eth0
  virtual_router_id 121
  mcast_src_ip 172.17.0.6
  priority 100
  nopreempt
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }

  track_script {
    chk_nginx
  }

  virtual_ipaddress {
    172.17.0.100
  }
}

11,添加心跳檢測文件

vim nginx_check.sh
#以下是腳本內(nèi)容
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
  /usr/local/nginx/sbin/nginx
  sleep 2
  if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
    killall keepalived
  fi
fi

12,給腳本賦予執(zhí)行權(quán)限

chmod +x nginx_check.sh

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

systemctl enable keepalived.service

#開啟keepalived
systemctl start keepalived.service

14,檢測虛擬IP是否成功,在宿主機(jī)里面執(zhí)行下面命令,如果出現(xiàn)nginx歡迎界面表示成功

curl 172.17.0.100

15,將centos_temp 容器重新打包成鏡像,然后利用這個(gè)新鏡像再創(chuàng)建兩個(gè)容器,實(shí)現(xiàn)熱備效果

docker commit -a 'cfh' -m 'centos with keepalived nginx' centos_temp centos_kn

16,刪除所有容器

docker rm -f `docker ps -a -q`

17,用centos_kn 鏡像創(chuàng)建主服務(wù)器容器

docker run --privileged -tid --name centos_master --restart=always centos_kn /usr/sbin/init

docker exec -it centos_master bash

18,修改centos_master里面nginx 歡迎頁,

vim /usr/share/nginx/html/index.html

19,創(chuàng)建從服務(wù)器容器

docker run --privileged -tid --name centos_slave --restart=always centos_kn /usr/sbin/init
docker exec -it centos_slave bash

#修改keepalived.conf 配置文件,主要是state和priority兩個(gè)參數(shù)的調(diào)整,其中master節(jié)點(diǎn)的priority值一定要比slave大才行

vrrp_script chk_nginx {
  script "/etc/keepalived/nginx_check.sh"
  interval 2
  weight -20
}

vrrp_instance VI_1 {
  state SLAVE
  interface eth0
  virtual_router_id 121
  mcast_src_ip 172.17.0.6
  priority 80
  nopreempt
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }

  track_script {
    chk_nginx
  }

  virtual_ipaddress {
    172.17.0.100
  }
}

20,修改完成之后重新加載

systemctl daemon-reload
systemctl restart keepalived.service

21,修改nginx歡迎頁(若nginx沒啟動(dòng)則執(zhí)行 systemctl start nginx.service)

vim /usr/share/nginx/html/index.html

22,測試

A> 分別在宿主機(jī),centos_master,centos_slave中進(jìn)行一下命令測試,如果顯示都為Master的歡迎頁面,說明配置成功1/3

curl 172.17.0.100

B> 此時(shí)停止centos_master容器( docker stop centos_master ),保留centos_slave容器,執(zhí)行以下命令,若切換到Slave頁面,則說明keepalived配置成功2/3

curl 172.17.0.100

C> 重啟centos_master 容器,此時(shí)執(zhí)行以下命令,看是從Slave切換到了Master,如果切換成功,說明我們配置到此成功了。

curl 172.17.0.100

說明,測試過程中,重啟容器之后,nginx沒有啟動(dòng),需要進(jìn)入容器啟動(dòng)一下,不然訪問不到Master頁面了,但是可以Ping通。

執(zhí)行下面命令,配置nginx隨機(jī)啟動(dòng),這樣不用每次重啟容器還需要手動(dòng)啟動(dòng)nginx

chkconfig nginx on

以上就是整個(gè)配置過程,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • CentOS7 安裝docker 解決啟動(dòng)不了的問題

    CentOS7 安裝docker 解決啟動(dòng)不了的問題

    這篇文章主要介紹了CentOS7 安裝docker 解決啟動(dòng)不了的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 使用Docker搭建MQTT服務(wù)器的過程詳解

    使用Docker搭建MQTT服務(wù)器的過程詳解

    這篇文章主要介紹了使用Docker搭建MQTT服務(wù)器的過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Docker 中的掛載機(jī)制詳解

    Docker 中的掛載機(jī)制詳解

    Docker 的掛載機(jī)制允許將宿主機(jī)的文件或目錄掛載到 Docker 容器內(nèi)部,這樣容器就可以訪問宿主機(jī)上的文件系統(tǒng),本文給大家介紹Docker 中的掛載機(jī)制,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 一文教會(huì)你用Docker打包Python運(yùn)行環(huán)境

    一文教會(huì)你用Docker打包Python運(yùn)行環(huán)境

    Docker提供了容器級(jí)別的資源隔離,由于Python的外部依賴管理中存在的問題,我們通常會(huì)使用virtualenv來對不同的項(xiàng)目創(chuàng)建其唯一的依賴環(huán)境,下面這篇文章主要給大家介紹了如何通過一篇文章教會(huì)你用Docker打包Python運(yùn)行環(huán)境的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Docker多階段鏡像構(gòu)建的實(shí)現(xiàn)

    Docker多階段鏡像構(gòu)建的實(shí)現(xiàn)

    本篇文章主要介紹了Docker多階段鏡像構(gòu)建的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • docker exec執(zhí)行多個(gè)命令的操作

    docker exec執(zhí)行多個(gè)命令的操作

    這篇文章主要介紹了docker exec執(zhí)行多個(gè)命令的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Docker部署Microsoft Sql Server詳細(xì)步驟

    Docker部署Microsoft Sql Server詳細(xì)步驟

    大家好,本篇文章主要講的是Docker部署Microsoft Sql Server詳細(xì)步驟,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Docker可視化工具Portainer的具體使用

    Docker可視化工具Portainer的具體使用

    Portainer是Docker的可視化工具,可提供一個(gè)交互界面顯示Docker的詳細(xì)信息供用戶操作,本文主要介紹了Docker可視化工具Portainer的具體使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Docker Cloud實(shí)現(xiàn)部署應(yīng)用操作詳解

    Docker Cloud實(shí)現(xiàn)部署應(yīng)用操作詳解

    這篇文章主要介紹了Docker Cloud實(shí)現(xiàn)部署應(yīng)用操作,較為詳細(xì)的分析了Docker Cloud部署應(yīng)用的步驟、命令、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-06-06
  • Docker跨主機(jī)網(wǎng)絡(luò)(manual)的實(shí)現(xiàn)

    Docker跨主機(jī)網(wǎng)絡(luò)(manual)的實(shí)現(xiàn)

    這篇文章主要介紹了Docker跨主機(jī)網(wǎng)絡(luò)(manual)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評論