当前位置: 首页 > news >正文

2021-08-29

服务器

主:172.17.0.2 master   

备:172.17.0.3 slave1

lvs虚拟IP:172.17.0.100

 
#nginx下载地址 http://nginx.org/download/
 

本地文件路径

1.dockerfile构建nginx

 
FROM centos:7
ADD nginx-1.6.0.tar.gz /usr/local
COPY nginx_install.sh /usr/local
RUN sh /usr/local/nginx_install.sh
EXPOSE 80
 

2.#安装nginx的shell脚本 nginx_install.sh

 
#! /bin/bash
yum install -y gcc -c++ make pcre pcre-devel zlib-devel
cd /usr/local/nginx-1.16.0
./configure --prefix=/usr/local/nginx && make && make install
 

3.构建镜像

 
#master: 
docker build -t mycentos:master-nginx .
#slave
docker build -t mycentos:slave1-nginx .
 

 4.查看构建的镜像

 
docker images
 

 

 5.启动容器

 
#master
docker run -itd --privileged=true -p 80:80 mycentos:master-nginx /usr/sbin/init
#slave1
docker run -itd --privileged=true -p 81:80 mycentos:slave1-nginx /usr/sbin/init
 

6.安装 keepalived

 
#keepalived 下载地址
http://nginx.org/download/nginx-1.9.10.tar.gz
 

7.复制本地keepalived包到docker容器中

 
#master 容器ID:cf2efc79462d  /usr/local/:复制到容器对应的路径下docker cp keepalived-1.2.18.tar.gz cf2efc79462d:/usr/local/#slave1 容器ID: bf0ef0ead87c  /usr/local/:复制到容器对应的路径下docker cp keepalived-1.2.18.tar.gz bf0ef0ead87c:/usr/local/
 

8.分别进入master slave1容器中

 
1.进入master slave1 容器中
#master
docker exec -it cf2efc79462d /bin/bash#slave1
docker exec -it bf0ef0ead87c /bin/bash2.master slave1分别执行以下操作2.1解压安装:tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/2.2下载插件opensslyum install -y openssl openssl-devel2.3开始编译keepalivedcd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived2.4进入keepalived-1.2.18目录 make一下make && make install
 

9.keepalived安装成Linux系统服务

 
将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local)
创建文件夹,将keepalived配置文件进行复制:
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
复制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/
#如果提示文件已经存在先做rm操作 时入sbin目录
rm -rf keepalived
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
 

10.配置keepalived

 
# maser  cat keepalived.conf 
vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh"interval 2 weight -20
}
vrrp_instance VI_1 {state MASTER              #指定masterinterface eth0            #网卡信息 进入相应的容器 输入命令ip a 可以查看相应的网卡信息virtual_router_id 100     #所有服务器指定一致mcast_src_ip 172.17.0.2   #容器Ip地址 输入命令ip a 可以查看相应IP地址priority 100              nopreempt advert_int 1authentication {          auth_type PASS     auth_pass 1111}track_script {chk_nginx }virtual_ipaddress {     #设置LVS 虚拟VIP172.17.0.100}
}#cat nginx_check.sh  重启nginx脚本
#!/bin/bash
A=`ps -C nginx ?Cno-header |wc -l`
if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginx              #启动Nginx命令sleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
fi######################################################################### slave1  cat keepalived.conf vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh"interval 2 weight -20
}
vrrp_instance VI_1 {state BACKUP              #指定BACKUPinterface eth0            #网卡信息 进入相应的容器 输入命令ip a 可以查看相应的网卡信息virtual_router_id 100     #所有服务器指定一致mcast_src_ip 172.17.0.3   #容器Ip地址 输入命令ip a 可以查看相应IP地址priority 100              nopreempt advert_int 1authentication {          auth_type PASS     auth_pass 1111}track_script {chk_nginx }virtual_ipaddress {     #设置LVS 虚拟VIP172.17.0.100}
}#cat nginx_check.sh  重启nginx脚本
#!/bin/bash
A=`ps -C nginx ?Cno-header |wc -l`
if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginx              #启动Nginx命令sleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
fi##############################################################
#分别将这些宿主机的配置文件复制到相应的docker容器中
#master
docker cp keepalived.conf cf2efc79462d:/etc/keepalived
docker cp nginx_check.sh cf2efc79462d:/etc/keepalived#slave1
docker cp keepalived.conf bf0ef0ead87c:/etc/keepalived
docker cp nginx_check.sh bf0ef0ead87c:/etc/keepalived
 

11.分别启动master,slave1 中keepalived

 
#启动
service keepalived start
#关闭
service keepalived stop
 

12进入容器中nginx中修改 /nginx/html/index.html

进入master 容器 ip a

进入slave1 容器 ip a 

 

13测试

 
#进入master slave1容器中输入
curl 172.17.0.100
 

 master:

 slave1:

 正常情况下只会访问master服务器 -- master 挂掉的情况下才会访问slave1 服务器

master容器中执行

 
#模拟挂掉
service keepalived stop
 

 请求转移到slave1 服务器中 (curl 172.17.0.100)

slave1 容中执行 ip a

重启master

 
#模拟重启
service keepalived start
 

 进入master 输入 ip a

 输入curl 172.17.0.100

 slave1容中 输入ip a

 slave1容器中输入 curl 172.17.0.100

http://www.lryc.cn/news/15768.html

相关文章:

  • 第八题、哈夫曼编码大全
  • linux集群技术(二)--keepalived(高可用集群)(二)
  • C# 控制台程序的开发和打包为一个exe文件
  • Redis实战案例
  • slice和splice区别
  • 动态规划从入门到精通-蓝桥杯
  • Docker部署Prometheus
  • JavaScript的执行顺序
  • C++11智能指针std::shared_ptr介绍及使用
  • 华为OD机试 - 数字的排列(Python) | 机试题+算法思路+考点+代码解析 【2023】
  • Android 事件分发机制(4)-常见面试题
  • 计算机四级 [操作系统] | 选择题 2 重点标注版
  • 想玩好ChatGPT?不妨看看这篇文章
  • day31 IO流
  • Linux 防火墙配置(iptables和firewalld)
  • 深度学习基础(一)
  • Maven 常用命令
  • 2023年100道最新Android面试题,常见面试题及答案汇总
  • [JavaEE系列] 详解面试中HTTP协议HTTPS协议
  • mac 好用的类似Xshell工具
  • 浅谈SQL中的union和union all
  • P6软件应用的核心收益
  • 性能测试中,我遇到的8个常见问题总结
  • kafka架构体系
  • 【Kafka】三.Kafka怎么保证高可用 学习总结
  • Python学习笔记7:再谈抽象
  • 钣金行业mes解决方案,缩短产品在制周期
  • 【Linux】——git和gdb的简单使用技巧
  • Fiddler的简单使用
  • MySql 事务