Docker下配置KeepAlive支持nginx高可用
案例子任务一、安装配置keepalived
步骤1:使用nginx镜像生成nginx-keep镜像
1) 启动nginx容器并进入
docker run -d --privileged nginx /usr/sbin/init
2)在nginx容器中使用yum方式安装keepalived
yum -y install keepalived
安装完成后,检查!
3)保存容器为镜像
docker commit 容器ID nginx-keep
步骤2:使用nginx-keep镜像启动nginx1和nginx2两个容器
1)#docker network create --subnet=172.18.0.0/16 cluster //创建docker网络
此网络在之前的案例中已有说明,请自行查阅!
2)#docker network ls //查看宿主机上的docker网络类型种类
3)启动容器nginx1,设定地址为172.18.0.11
docker run -d --privileged --net cluster --ip 172.18.0.11 --name nginx1 nginx-keep /usr/sbin/init
4)启动容器nginx2,设定地址为172.18.0.12
docker run -d --privileged --net cluster --ip 172.18.0.12 --name nginx2 nginx-keep /usr/sbin/init
5)配置容器nginx1的web服务,编辑首页内容为“nginx1”,在宿主机访问,nginx2亦是如此。
此时,两个容器的nginx配置基本完成!
步骤3:在nginx1和nginx2两个容器配置keepalived
注意:docker容器下配置高可用,需要在宿主机安装keepalived服务并启动,否则容器keepalived不能启动
1) 在nginx1编辑 /etc/keepalived/keepalived.conf ,启动keepalived服务
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 172.18.0.1
smtp_connect_timeout 30
router_id nginx1 #ID唯一标识,名称不可重复
vrrp_skip_check_adv_addr
#vrrp_strict #此行需要注释掉,否则会导致宿主机无法访问VIP,严格执行vrrp协议
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER #主为master
interface eth0 #所属网络
virtual_router_id 51 #虚拟ID,默认即可
priority 100 #权重
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.18.0.10 #vip地址
}
}
完事后启动。
2)在nginx2编辑 /etc/keepalived/keepalived.conf ,启动keepalived服务
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 172.18.0.1
smtp_connect_timeout 30
router_id nginx1 #ID唯一标识,名称不可重复
vrrp_skip_check_adv_addr
#vrrp_strict #此行需要注释掉,否则会导致宿主机无法访问VIP,严格执行vrrp协议
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP #从为backup
interface eth0 #所属网络
virtual_router_id 51 #虚拟ID,默认即可
priority 90 #权重
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.18.0.10 #vip地址
}
}
完事后重启
3)在宿主机ping 172.18.0.10,使用arp -a 查看缓存
4)#curl http:// 172.18.0.10在宿主机访问虚拟地址
5)#ifconfig eth0 down在nginx1上当掉网卡,在宿主机使用arp -a 查看缓存
可以观察到MAC发生了变化!
6)#curl http:// 172.18.0.10在宿主机使用浏览器访问虚拟地址
案例子任务二、配置keepalived 支持nginx高可用
步骤1:编写 Nginx 状态检测脚本
1) 在nginx1上编写 Nginx 状态检测脚本 /etc/keepalived/nginx_check.sh
#!/bin/bash
if [ `ps -C nginx --no-header |wc -l` -eq 0 ] #用于查看当前nginx运行状况
then
systemctl start nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ]
then
kill keepalived
fi
fi
2)赋予/etc/keepalived/nginx_check.sh执行权限,并测试脚本
步骤2:配置keepalived 支持nginx高可用
1)在nginx1上编辑/etc/keepalived/keepalived.conf
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 172.18.0.1
smtp_connect_timeout 30
router_id nginx1
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #执行脚本
interval 2
weight -20 #降低nginx1的权重
} vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx #执行
}
virtual_ipaddress {
172.18.0.10
}
}
2)重新启动keepalived,在主机使用浏览器访问虚拟地址
3)在nginx1停止nginx服务,在主机使用浏览器访问虚拟地址
由此,我们就实现了简单的高可用配置!
Docker下配置KeepAlive支持nginx高可用的更多相关文章
- 配置keepalived支持nginx高可用
实验环境 序号 主机名 IP地址 1 nginx1 192.168.204.11 2 nginx2 192.168.204.12 安装nginx 安装nginx yum install -y epel ...
- docker下用keepalived+Haproxy实现高可用负载均衡集群
启动keepalived后宿主机无法ping通用keepalived,报错: [root@localhost ~]# ping 172.18.0.15 PING () bytes of data. F ...
- Keepalived保证Nginx高可用配置
Keepalived保证Nginx高可用配置部署环境 keepalived-1.2.18 nginx-1.6.2 VM虚拟机redhat6.5-x64:192.168.1.201.192.168.1. ...
- 001/Nginx高可用模式下的负载均衡与动静分离(笔记)
Nginx高可用模式下的负载均衡与动静分离 Nginx(engine x)是一个高性能的HTTP和反向代理服务器,具有内存少,并发能力强特点. 1.处理静态文件.索引文件以及自动索引:打开文件描述符缓 ...
- linux中keepalived实现nginx高可用配置
linux中keepalived实现nginx高可用配置 安装keepalived 运行如下命令即可 tar -zxvf keepalived-2.0.8.tar.gz -C /usr/src cd ...
- 面试中的nginx高可用高并发!
本文转自:91博客:原文地址:http://www.9191boke.com/439923471.html 面试题: nginx高可用?nginx 是如何实现并发的?为什么nginx不使用多线程?ng ...
- RabbitMQ高级指南:从配置、使用到高可用集群搭建
本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ...
- MySQL数据库的优化(下)MySQL数据库的高可用架构方案
MySQL数据库的优化(下)MySQL数据库的高可用架构方案 2011-03-09 08:53 抚琴煮酒 51CTO 字号:T | T 在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQ ...
- Nginx(四):Keepalived+Nginx 高可用集群
Keepalived+Nginx 高可用集群 (主从模式) 集群架构图 安装keepalived [root@localhost ~]# yum install -y keepalived 查看状态 ...
随机推荐
- MySQL Docker容器实例创建并进入MySQL命令行
首先需要明白的一点是: docker镜像是一个模版,docker容器是一个实例,它可以被启动与关闭. 我们需要先有MySQL的docker镜像,使用命令: docker pull mysql 拉取最新 ...
- java springboot@GeneratedValue 注解
springboot中@GeneratedValue作用: (1)@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键.@GeneratedValue提供了主键的生成策 ...
- mock.js 和easy-mock使用
mock.js 1.项目中引入mock.js <script src="../static/js/mock.js" type="text/javascript&qu ...
- 惊天秘密!如何在 Flutter 项目中实现操作引导
不要冒然评价我,你只知道我的名字,却不知道我的故事,你只是听闻我做了什么,却不知我经历过什么. 俗话说得好,产品有三宝,弹窗浮层加引导. 上图截图自我司 App 晓黑板中的口算模块,相信每个 App ...
- SpringBoot快速入门(实战篇一)
SpringBoot快速入门(一) 一SpringBoot简介 1.spring开发经历的阶段 Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 ...
- rpl_semi_sync_master_wait_no_slave 参数研究实验
最近在研究MySQL,刚学到半同步. 半同步的配置中,关于这两个参数: rpl_semi_sync_master_wait_no_slave rpl_semi_sync_master_wait_for ...
- RMAN迁移数据库(不改变文件目录)
1.目标库创建相应目录mkdir -p /u01/app/oracle/oradata/orclmkdir -p /u01/app/oracle/fast_recovery_area/ORCLmkdi ...
- Clickhouse 在大数据分析平台 - 留存分析上的应用
导语 | 本文实践了对于千万级别的用户,操作总数达万级别,每日几十亿操作流水的留存分析工具秒级别查询的数据构建方案.同时,除了留存分析,对于用户群分析,事件分析等也可以尝试用此方案来解决. 文章作者: ...
- idea 最好用的插件
1.lombok 不用写get,set方法 2.MyBatisCodeHelperPro 3.Rainbow Brackets 彩虹括号 5.activate-power-mode 动感打字 7.Ba ...
- CDH6.3.0下Apache Atlas2.1.0安装与配置
CDH6.3.0下Apache Atlas2.1.0安装与配置 0. 说明 文中的${ATLAS_HOME}, ${HIVE_HOME} 环境变更需要根据实际环境进行替换. 1. 依赖 A. 软件依赖 ...