nginx+keepalived实现主从高可用
设备:
主:192.168.200.122
从:192.168.200.124
安装:两台都分别安装nginx以及keepalived
两台机步骤一致一主一从
安装nginx的依赖包
[root@localhost ~]#yum install gcc gcc-c++ make pcre-devel zlib-devel -y
[root@localhost ~]#useradd -M -s /sbin/nologin nginx
[root@localhost ~]#tail -l /etc/passwd;tail -l /etc/group
[root@localhost ~]#rz #导入nginx源码包
[root@localhost ~]# ls
anaconda-ks.cfg nginx-1.15.9.tar.gz original-ks.cfg 模板 图片 下载 桌面
initial-setup-ks.cfg 公共 视频 文档 音乐
[root@localhost ~]# tar xf nginx-1.15.9.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/nginx-1.15.9
[root@localhost ~]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
[root@localhost ~]# ls /usr/local/sbin
做软连接方便查找nginx位置
[root@localhost ~]# ln -s /usr/local/bin/nginx /usr/local/sbin
[root@localhost ~]# ll /usr/local/sbin
lrwxrwxrwx. 1 root root 27 10月 21 10:50 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx
[root@localhost ~]# cd /usr/local/nginx/conf
[root@localhost conf]# vim nginx.conf
user nginx nginx;
worker_processes ; #error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info; pid logs/nginx.pid; events {
use epoll;
worker_connections ;
} http {
include mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout ;
keepalive_timeout ; #gzip on; server {
listen ;
server_name localhost; charset utf-; access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
} #error_page /.html; # redirect server error pages to the static page /50x.html
#
error_page /50x.html;
location = /50x.html {
root html;
} } }
[root@localhost conf]#cd ../
[root@localhost nginx]#cd html
<p><em>Thank you for using nginx 192.168.200.122</em></p> #从写192.168.200.124
[root@localhost conf]#nginx -t
[root@localhost conf]#nginx
[root@localhost conf]#killall -HUP nginx
安装keepalived
[root@localhost ~]#yum install keepalived -y
编写nginx脚本用以承载keepalived的依赖
[root@localhost ~]# vim nginx.sh
#!/bin/bash
counter=$(ps -C nginx --no-heading | wc -l)
if [ '${counter}' = '' ];then
/usr/local/nginx/sbin/nginx
sleep
counter=$(ps -C nginx --no-heading | wc -l)
if [ '${counter}' = '' ];then
systemctl stop keepalived
fi
fi
[root@localhost ~]#cd /etc/keepalived
[root@localhost ~]#cp keepalived.conf keepalived.conf.bak
[root@localhost ~]#vim keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
route_id 192.168.200.122 #主写122、从写124
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval
vrrp_gna_interval
}
vrrp_script chk_http_port {
script '/root/nginx.sh' #启用nginx.sh脚本
insterval 2
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state MASTER #主写MASTER、从写SLAVE
interface ens33
virtual_router_id
priority 100 #主写100、从写99
advert_int
authentication {
auth_type PASS
auth_pass
}
track_script {
check_nginx
}
virtual_ipaddress {
192.168.200.254
}
}
[root@localhost ~]#service keepalived start
关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]#ip a
: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP group default qlen
link/ether :0c::f8:6e: brd ff:ff:ff:ff:ff:ff
inet 192.168.200.122/ brd 192.168.200.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.200.254/ scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fef8:6e73/ scope link
valid_lft forever preferred_lft forever
测试1:
条件一:当两台机的nginx、keepalived都开启时
主:192.168.200.122
[root@locahost ~]#ip a
: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP group default qlen
link/ether :0c::3e::0e brd ff:ff:ff:ff:ff:ff
inet 192.168.200.122/ brd 192.168.200.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.200.254/ scope global ens33
valid_lft forever preferred_lft forever
从:192.168.200.124
[root@locathost ~]#ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:f8:6e:73 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.122/24 brd 192.168.200.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fef8:6e73/64 scope link
valid_lft forever preferred_lft forever

测试2:
条件1:当关闭主的keepalived以及nginx服务时,IP192.168.200.254会不会漂移到从机上
先关闭keepalived再关闭nginx服务
[root@localhost ~]# service keepalived stop
[root@localhost ~]# nginx -s quit
主:192.168.200.122
[root@locahost ~]#ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:3e:05:0e brd ff:ff:ff:ff:ff:ff
inet 192.168.200.122/24 brd 192.168.200.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
从:192.168.200.124
[root@locathost ~]#ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:3e:05:0e brd ff:ff:ff:ff:ff:ff
inet 192.168.200.124/24 brd 192.168.200.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.200.254/32 scope global ens33
valid_lft forever preferred_lft forever

nginx+keepalived实现主从高可用的更多相关文章
- Nginx+Keepalived负载均衡高可用
Nginx+Keepalived负载均衡高可用方案: Nginx 使用平台:unix.linux.windows. 功能: A.www web服务 http 80 b.负载均衡(方向代理proxy) ...
- 23.Nginx+keepalived负载均衡高可用
Nginx+keepalived负载均衡高可用 结构图 环境: 主 服务器:192.168.239.10 备 服务器:192.168.239.20 Web 服务器1:192.168.239.40 We ...
- Nginx系列篇三:linux中Nginx+keepalived做一个高可用的主从配置
建议:先阅读搭建Nginx负载均衡之后再看此篇 备注: Nginx+keepalived的高可用有两种方式 一.主从配置 二.双主热备配置[下一篇] 准备: 标配四台服务器 Master:192.16 ...
- Nginx + Keepalived实现应用高可用负载均衡功能
说明:此处仅介绍 Keepalived 实现nginx负载均衡器的高可用,关于nginx介绍和负载均衡实现可查看我的另两篇博文 Nginx负载均衡 和 Nginx配置了解 应用背景:实现高可用,避免单 ...
- Docker+Nginx+Keepalived实现架构高可用
一.背景 通过keepalived实现nginx高可用,由于在家不想弄多台主机来搞,所以将运行环境用docker封装来模拟跨主机 docker基础镜像:centos 说之前,简单介绍一下: Keepa ...
- 【Linux运维-集群技术进阶】Nginx+Keepalived+Tomcat搭建高可用/负载均衡/动静分离的Webserver集群
额.博客名字有点长.. . 前言 最终到这篇文章了,心情是有点激动的. 由于这篇文章会集中曾经博客讲到的全部Nginx功能点.包含主要的负载均衡,还有动静分离技术再加上这篇文章的重点.通过Keepal ...
- nginx+keepalived双主高可用负载均衡
实验环境及软件版本:CentOS版本: 6.6(2.6.32.-504.el6.x86_64)nginx版本: nginx-1.6.3keepalived版本:keepalived-1.2.7 主LB ...
- Nginx+Keepalived 主备高可用 安装与配置
环境说明:操作系统:CentOS6.7 x86_64Nginx版本:nginx-1.9.7Keepalived版本:keepalived-1.2.24 主nginx + Keepalived :10. ...
- nginx+keepalived+consul 实现高可用集群
继 负载均衡 之 nginx+consul+consul template,我这次将使用2台虚拟机,来做一个简单的双机负载均衡试验. 试验目标: 1. 当参加负载均衡的子节点服务,有任何其中一个或多个 ...
随机推荐
- sql查询 —— 模糊查询
--模糊查询 --like --%至少替换一个 -- _只替换一个 -- 查姓李的人 select *from student name like "李%"; -- 查名为杰伦的人 ...
- js获取当前时间:yyyy-MM-dd HH:MM:SS
var nowDate = new Date();var year = nowDate.getFullYear(); < ? ; ? " + nowDate.getDate() : n ...
- input file弹出框选择文件后缀限制
在页面选择文件时的弹出框默认显示的是所有类型的文件,有时候文件太多不好选择,我们就要过滤掉不想展示的文件,这是需要用到input的accept属性,只有在type="file"才有 ...
- zk zkCli shell命令
查看zk 注册服务:在zk bin 下执行 sh zkCli.sh 计入客户端shell命令行 查看zk注册服务:ls / 或者递归查看 ls -s / 列出的为注册服务. 查询服务 ...
- IntelliJ IDEA 2017.3尚硅谷-----取消标题单行显示
- 使用SqlDataReader的查询操作
原创weixin_42430576 发布于2019-01-31 18:49:41 阅读数 762 收藏 展开 using System; using System.Collections.Gener ...
- 计算几何-HPI
This article is made by Jason-Cow.Welcome to reprint.But please post the article's address. 在线笛卡尔坐 ...
- LUA利用第三方API访问数据库
===========数据库访问--第三方 http { upstream backend { drizzle_server 192.168.4.119:3306 protocol=mysql dbn ...
- React的React.createRef()/forwardRef()源码解析(三)
1.refs三种使用用法 1.字符串 1.1 dom节点上使用 获取真实的dom节点 //使用步骤: 1. <input ref="stringRef" /> 2. t ...
- 微信小程序遮罩层覆盖input失效
问题:微信小程序中,我们常使用遮罩层,如点击按钮弹出下拉框.弹框等等.若在遮罩层下存在input.textarea.canvas.camera.map.video等标签时,会出现遮罩层覆盖失效的问题. ...