设备:

主: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实现主从高可用的更多相关文章

  1. Nginx+Keepalived负载均衡高可用

    Nginx+Keepalived负载均衡高可用方案: Nginx 使用平台:unix.linux.windows. 功能: A.www web服务  http 80 b.负载均衡(方向代理proxy) ...

  2. 23.Nginx+keepalived负载均衡高可用

    Nginx+keepalived负载均衡高可用 结构图 环境: 主 服务器:192.168.239.10 备 服务器:192.168.239.20 Web 服务器1:192.168.239.40 We ...

  3. Nginx系列篇三:linux中Nginx+keepalived做一个高可用的主从配置

    建议:先阅读搭建Nginx负载均衡之后再看此篇 备注: Nginx+keepalived的高可用有两种方式 一.主从配置 二.双主热备配置[下一篇] 准备: 标配四台服务器 Master:192.16 ...

  4. Nginx + Keepalived实现应用高可用负载均衡功能

    说明:此处仅介绍 Keepalived 实现nginx负载均衡器的高可用,关于nginx介绍和负载均衡实现可查看我的另两篇博文 Nginx负载均衡 和 Nginx配置了解 应用背景:实现高可用,避免单 ...

  5. Docker+Nginx+Keepalived实现架构高可用

    一.背景 通过keepalived实现nginx高可用,由于在家不想弄多台主机来搞,所以将运行环境用docker封装来模拟跨主机 docker基础镜像:centos 说之前,简单介绍一下: Keepa ...

  6. 【Linux运维-集群技术进阶】Nginx+Keepalived+Tomcat搭建高可用/负载均衡/动静分离的Webserver集群

    额.博客名字有点长.. . 前言 最终到这篇文章了,心情是有点激动的. 由于这篇文章会集中曾经博客讲到的全部Nginx功能点.包含主要的负载均衡,还有动静分离技术再加上这篇文章的重点.通过Keepal ...

  7. nginx+keepalived双主高可用负载均衡

    实验环境及软件版本:CentOS版本: 6.6(2.6.32.-504.el6.x86_64)nginx版本: nginx-1.6.3keepalived版本:keepalived-1.2.7 主LB ...

  8. Nginx+Keepalived 主备高可用 安装与配置

    环境说明:操作系统:CentOS6.7 x86_64Nginx版本:nginx-1.9.7Keepalived版本:keepalived-1.2.24 主nginx + Keepalived :10. ...

  9. nginx+keepalived+consul 实现高可用集群

    继 负载均衡 之 nginx+consul+consul template,我这次将使用2台虚拟机,来做一个简单的双机负载均衡试验. 试验目标: 1. 当参加负载均衡的子节点服务,有任何其中一个或多个 ...

随机推荐

  1. 删除空目录命令 - rmdir

    (1) 命令名称:rmdir (2) 英文原意:remove empty directories (3) 命令所在路径:/bin/rmdir (4) 执行权限:所有用户 (5) 功能描述:删除空目录( ...

  2. windows下划分逻辑分区

    运行命令窗口后,我们输入命令"diskpart"回车! 然后我们在DISKPART>后面输入select disk 0 选择我们的硬盘,然后回车!当然如果你电脑上有好几块硬盘 ...

  3. SQLServer2008不允许保存更改错误解决办法

    SQLServer2008不允许保存更改错误解决办法 今天在运行sql server 2008时候提示不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法. 一.启动SQL Server ...

  4. hdu2328 后缀树

    #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #in ...

  5. 常见的sql语句练习

    一. 1.新建表 test id varchar2(20)name varchar2(20)addr varchar2(50)score number create table test(id var ...

  6. NOIP做题练习(day3)

    A - 军队 问题描述 给定一个有 \(n\) 个队伍的人组成的序列,第 \(i\) 个队伍 \(i\) 有 \(s[i]\)个人组成,一个 \(l\) 到 \(r\)的子序列是合法的,当且仅当\(( ...

  7. Django_模板

    1. 模板变量 小插曲 2. 模板点语法和标签 2.1 获取属性 2.2 调用方法 2.3 获取索引 2.4 获取字典中的值 3. 模板中的标签 3.1 if 3.2 for 3.3 注释 乘除 整除 ...

  8. Scanner的hasNext()方法

    转自:https://blog.csdn.net/gao_zhennan/article/details/80562548 找到一篇关于hasNext()的常见问题的文章,记录一下

  9. redis安装与基本使用

    什么是Redis 什么是NoSQL 介绍Redis之前,先了解下NoSQL (Not noly SQL)不仅仅是SQL 属于非关系型数据库:Redis就属于非关系型数据库 传统的Mysql ,orac ...

  10. Added non-passive event listener to a scroll-blocking 'touchmove' event. Consider marking event handler as 'passive' to make the page more responsive

     Vue控制台警告:  Added non-passive event listener to a scroll-blocking 'touchmove' event. Consider markin ...