本文的重点是Keepalived的配置,Nginx的配置就简略带过。
软件:CentOS 7.2 / Nginx 1.12.2 / Keepalived 1.3.9

ha-01:192.168.1.97
ha-02:192.168.1.98
VIP:192.168.1.99

1、安装之前首先关闭SELinux(重启后生效)

[root@ha-01 /]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2、增加防火墙规则:(192.168.1.99为虚IP)

[root@ha-01 /]# vim /etc/sysconfig/iptables
增加如下项目:
-A INPUT -d 192.168.1.99 -j ACCEPT
-A INPUT -p vrrp -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

3、安装系统常用工具:

[root@ha-01 /]# yum -y install vim tree telnet curl wget git xz unzip htop iftop lshw

4、安装代码编译的依赖包:

[root@ha-01 /]# yum -y install gcc gcc-c++ make automake autoconf

5、安装Nginx相关依赖包:

[root@ha-01 /]# yum -y install pcre* zlib* openssl*

6、安装Keepalived相关依赖包:

[root@ha-01 /]# yum -y install libnl-devel libnl3-devel libnfnetlink-devel

7、下载、安装Nginx:

[root@ha-01 /]# wget -P/usr/local/src/ http://nginx.org/download/nginx-1.12.2.tar.gz
[root@ha-01 /]# tar -xzvf /usr/local/src/nginx-1.12.2.tar.gz -C /usr/local/src/
[root@ha-01 /]# cd /usr/local/src/nginx-1.12.2
[root@ha-01 /]# ./configure --prefix=/usr/local/nginx
[root@ha-01 /]# make -j 2
[root@ha-01 /]# make install

8、启动Nginx服务:

[root@ha-01 /]# /usr/local/nginx/sbin/nginx -t
[root@ha-01 /]# /usr/local/nginx/sbin/nginx

9、下载、安装Keepalived:

[root@ha-01 /]# wget -P/usr/local/src/ http://www.keepalived.org/software/keepalived-1.3.9.tar.gz
[root@ha-01 /]# tar -xzvf /usr/local/src/keepalived-1.3.9.tar.gz -C /usr/local/src/
[root@ha-01 /]# cd /usr/local/src/keepalived-1.3.9
[root@ha-01 /]# ./configure --prefix=/usr/local/keepalived
[root@ha-01 /]# make -j 2
[root@ha-01 /]# make install

10、编辑keepalived.conf配置文件:

[root@ha-01 /]# vim /usr/local/keepalived/etc/keepalived/keepalived.conf  

  [Master] ha-01(192.168.1.97)

! Configuration File for keepalived master

global_defs {
notification_email {
root@localhost
} notification_email_from root@localhost
smtp_server root
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
} vrrp_script chk_http_port {
script "/usr/local/keepalived/etc/keepalived/chk_http_port.sh"
interval 2
weight -10
fall 2
rise 1
} vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.131
} track_script {
chk_http_port
}
}

  [Backup] ha-02(192.168.1.98)

! Configuration File for keepalived slave

global_defs {
notification_email {
root@localhost
} notification_email_from root@localhost
smtp_server localhost
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
} vrrp_script chk_http_port {
script "/usr/local/keepalived/etc/keepalived/chk_http_port.sh"
interval 2
weight -10
fall 2
rise 1
} vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 51
priority 95
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.99
} track_script {
chk_http_port
}
}

11、编辑Nginx服务监控脚本:
  [root@ha-01 /]# vim /usr/local/keepalived/etc/keepalived/chk_http_port.sh
  [root@ha-01 /]# chmod +x /usr/local/keepalived/etc/keepalived/chk_http_port.sh  

#!/bin/bash

count=0
for (( k=0; k<2; k++ ))
do
check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://localhost/ -o /dev/null )
if [ "$check_code" != "200" ]; then
count=$(expr $count + 1)
sleep 3
continue
else
count=0
break
fi
done if [ "$count" != "0" ]; then
systemctl stop keepalived
exit 1
else
exit 0
fi

12、编辑keepalived系统启动配置文件:

[root@ha-01 /]# vim /usr/local/keepalived/etc/sysconfig/keepalived
修改:
KEEPALIVED_OPTIONS="-D"
为:
KEEPALIVED_OPTIONS="-f /usr/local/keepalived/etc/keepalived/keepalived.conf -D -d -S 0"

13、修改keepalived日志文件路径:

[root@ha-01 /]# vim /etc/rsyslog.conf

  添加如下项目:

#keepalived -S 0
local0.*/usr/local/keepalived/etc/keepalived/keepalived.log

  重启rsyslog服务:

[root@ha-01 /]# systemctl restart rsyslog

14、拷贝keepalived启动文件至系统启动目录:

[root@ha-01 /]# cp /usr/local/src/keepalived-1.3.9/keepalived/etc/init.d/keepalived /etc/init.d/

15、编辑keepalived启动文件:

[root@ha-01 /]# vim /etc/init.d/keepalived
修改:
. /etc/sysconfig/keepalived
为:
. /usr/local/keepalived/etc/sysconfig/keepalived 并增加keepalived可执行文件至系统环境:
PATH="$PATH:/usr/local/keepalived/sbin"
export PATH

16、启动keepalived服务:

[root@ha-01 /]# systemctl enable keepalived
[root@ha-01 /]# systemctl start keepalived

17、查看keepalived进程:

[root@ha-01 /]# ps -ef | grep "keepalived"

[THE END]  

Nginx+Keepalived搭建高可用负载均衡集群的更多相关文章

  1. Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群

    一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...

  2. LVS+Keepalived 实现高可用负载均衡集群

    LVS+Keepalived  实现高可用负载均衡集群     随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...

  3. Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)

    说明 本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念. 两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由 ...

  4. haproxy + keepalived 实现高可用负载均衡集群

    1. 首先准备两台tomcat机器,作为集群的单点server. 第一台: 1)tomcat,需要Java的支持,所以同样要安装Java环境. 安装非常简单. tar xf  jdk-7u65-lin ...

  5. Keepalived+LVS高可用负载均衡集群

    概述 Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(HeathChecking)功能——判断LVS负载调度器.节点服务器的可用性,及 ...

  6. 基于Haproxy+Keepalived构建高可用负载均衡集群

    实验环境: 主机名 IP地址 VIP 192.168.200.254 Haproxy-1 192.168.200.101 Haproxy-2 192.168.200.102 Nginx1 192.16 ...

  7. Haproxy+Keepalived构建高可用负载均衡集群

    实验环境: 主机名 IP地址 VIP 192.168.200.254 Haproxy-1 192.168.200.101 Haproxy-2 192.168.200.102 Nginx1 192.16 ...

  8. Keepalived+Nginx实现高可用负载均衡集群

    一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+nginx双主高可用负载均衡集群及LAMP应用keepalived-1 ...

  9. RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群

    本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...

随机推荐

  1. phpcms V9 二次开发------(获取点击数详解)

    关于phpcms V9的点击数的使用应该有不少数是直接调用网上搜索到的代码,但是对于一些想要深入研究开发的人来说,看到网上的代码后更是不解,本人这几天看了看,了解了一些东西,在这里写出来分享一下,首先 ...

  2. Nginx Windows详细安装部署教程

    一.Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ramble ...

  3. mapfile中关于栅格数据的processing项说明

    mapfile是MapServer中地图的配置文件,规定了地图的源数据.投影.样式等一系列信息.用MapServer发布影像地图,需要用以下processing项设置地图的风格样式. BANDS=re ...

  4. Activity、Window、View三者之间的联系

    Activity类:Android四大组件之一,是开发者最常用的一个组件 Window类:是一个抽象类,具有窗口管理的功能,实现类为PhoneWindow View类:提供对View的操作,包括绘制测 ...

  5. C# 离线人脸识别Demo 使用ArcFace 2.0开发完成

    环境:     win7以上  VS2013以上    sdk版本:ArcFace v2.0    x86 x64平台Debug.Release配置都已通过编译 下载地址:https://github ...

  6. 如何快速清理 docker 资源

    如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察觉的应该是对磁盘空间的占用.本文将介绍如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无 ...

  7. MyDAL - in && not in 条件 使用

    索引: 目录索引 一.API 列表 C# 代码中 接口 IList.Contains() 方法生成 SQL 对应的 in(val1,val2,... ...) 如:.Queryer<Agent& ...

  8. webapi返回json字符串

    第一种 直接在方法中返回json. public class DefaultController : ApiController { [HttpGet] public IHttpActionResul ...

  9. Linux:Day18(下) Bind9

    子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库中进行授权. 类似根域授权tld: .com IN NS ns1.com. .com IN NS ns1.com. ns1.com IN ...

  10. day 24 面向对象之继承及属性查找顺序

    组合 组合:自定义类的对象作为另外一个类的属性 class Teacher: def init(self, name, age): self.name = name self.age = age t1 ...