nginx与keepalived实现高可用

本实验使用了四台虚拟机

两台需要安装nginx及keepalived

两台安装Apache

nginx可以源码安装也可以用yum安装nginx

yum安装nginx需要epel源

 实验环境
nginx+keepalived 192.168.200.10
nginx+keepalived 192.168.200.11
Apache 192.168.200.12
Apache 192.168.200.13

一:网络拓扑结构图

二:keepalived,nginx以及Apache安装

源码安装nginx

[root@localhost ~]#yum -y install pcre-devel zlib-devel make gcc gcc-c++ openssl-devel             #安装Nginx依赖包

[root@localhost ~]#useradd -M -s /sbin/nologin nginx                                                   #创建一个Nginx测试用户

[root@localhost ~]#tar xf nginx -C /usr/src                                                         #将Nginx解包到/usr/src下

[root@localhost ~]#cd /usr/src/nginx

[root@localhost ~]#./configure  --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module --with-pcre  &&  make && make install                                                                #对Nginx进行编译安装

--prefix 设定Nginx的安装目录

--user和--group 指定Nginx运行用户和组

--with-http_stub_status_module 启用http_stub_status_module模块以支持状态统计

--with-http_ssl_module 启用SSL模块

--with-http_flv_module 启用FLV模块,提供寻求内存使用基于时间的偏移量文件

[root@localhost ~]#ln -s /usr/local/nginx/sbin/nginx  /usr/local/bin                   #给Nginx一个软连接

[root@localhost ~]#nginx -t                                                                        #检查语法

[root@localhost ~]# nginx                                                                     #开启Nginx服务

[root@localhost ~]#netstat -lnpt | grep 80                                                #查看端口

yum安装nginx

#安装nginx
[root@localhost ~]# yum -y install nginx

输入命令:

whereis nginx
即可看到类似于如下的内容:

nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx

以下是Nginx的默认路径:

(1) Nginx配置路径:/etc/nginx/

(2) PID目录:/var/run/nginx.pid

(3) 错误日志:/var/log/nginx/error.log

(4) 访问日志:/var/log/ginx/access.log

(5) 默认站点目录:/usr/share/nginx/html

事实上,只需知道Nginx配置路径,其他路径均可在/etc/nginx/nginx.conf 以及/etc/nginx/conf.d/default.conf 中查询到。

常用命令

(1) 启动:

nginx

(2) 测试Nginx配置是否正确:

nginx -t
(3) 优雅重启:

nginx -s reload

该命令与以下命令类似:

kill -HUP nginx进程号

#安装Keepalived
[root@localhost ~]# yum -y install keepalived

三:Keepalived配置

主Keepalived设置 

[root@centos6-1 keepalived]# pwd
/etc/keepalived
[root@centos6-1 keepalived]# cp keepalived.conf keepalived.conf.bak

[root@localhost ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived                                #全局定义
global_defs {
   notification_email {                                                    #指定keepalived在发生事件时(比如切换)发送通知邮件的邮箱
     acassen@firewall.loc                                               
     failover@firewall.loc                                                   #设置报警邮件地址,可以设置多个,每行一个。 需开启本机的sendmail服务
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc                #keepalived在发生诸如切换操作时需要发送email通知地址
   smtp_server 192.168.200.1                                                            #指定发送email的smtp服务器
   smtp_connect_timeout 30                                                            #设置连接smtp server的超时时间
   router_id LVS_DEVEL                                                           #运行keepalived的机器的一个标识,通常可设为hostname。故障发生时,发邮件时显示在邮件主题中的信息。
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_script check_nginx {          #引入脚本文件
 script "/shell/nginx_check.sh"
 interval 2
 weight -20
}
vrrp_instance VI_1 {                #vrrp实例定义部分    
    state MASTER                 #指定 Keepalived 的角色,MASTER表示此主机是主用服务器,BACKUP表示是备用服务器。备份服务器上将 MASTER 改为 BACKUP。
    interface ens32               #指定 HA监测网络的接口
    virtual_router_id 51              #虚拟路由标识,这个标识是一个数字,并且同一个 vrrp 实例使用唯一的标识,即同一个 vrrp_instance下,MASTER 和 BACKUP必须是一致的。(0-255)
    priority 100                    #定义优先级,数字越大,优先级越高,在一个 vrrp_instance下,MASTER的优先级必须大于 BACKUP 的优先级。备份服务上将 100 改为 50
    advert_int 1                   #设定MASTER 与 BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {                  #设定验证类型和密码
        auth_type PASS                #设置验证类型,主要有 PASS和 AH 两种
        auth_pass 1111                #设置验证密码,在一个 vrrp_instance下,MASTER 与 BACKUP必须使用相同的密码才能正常通信。
    }
    virtual_ipaddress {                #设置虚拟 IP地址,可以设置多个虚拟IP地址,每行一个
        192.168.200.254 
    }
    track_script {
 check_nginx        #引用脚本
    }
}
 
从Keepalived设置
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   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 check_nginx {
 script "/shell/nginx_check.sh"
 interval 2
 weight -20
}
vrrp_instance VI_1 {
    state BACKUP
    interface eno16777728
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.254
    }
    track_script {
 check_nginx 
    }
}
 
#安装Apache
yum安装Apache
[root@localhost ~]# yum -y install httpd
源码安装Apache

[root@localhost ~]# yum -y install gcc    //安装gcc

[root@localhost ~]# yum -y install make   //安装make

[root[root@localhost ~]# yum -y install gcc-c++   //安装gcc-c++

[root@localhost ~]# yum -y install lynx          //安装lynx

@localhost ~]# tar -xf httpd-2.2.17.tar.gz -C /usr/src    //解包

[root@localhost ~]# cd /usr/src/httpd-2.2.17/      //进入httpd-2.2.17文件目录

[root@localhost httpd-2.2.17]# config --prefix =/usr/local/apache     //安装目录

[root@localhost httpd-2.2.17]# make        //执行make命令

[root@localhost httpd-2.2.17]# make install   //执行make install命令

root@localhost httpd-2.2.17]# cd /usr/local/apache/conf       //切换目录

[root@localhost conf]# cp httpd.conf httpd.conf.bak

[root@localhost conf]# cd /usr/src/httpd-2.2.17/

[root@localhost conf]# vim httpd.conf

ServerName www.example.com:80

[root@localhost ~]# /usr/local/apache/bin/apachectl start      //启动Apache

[root[root@localhost ~]# lynx 127.0.0.1        //运行

四:nginx配置

两台nginx做同样的配置

[root@localhost ~]# vim /etc/nginx/nginx.conf

upstream nginx_server {
      server 192.168.200.12:80 weight=1;
      server 192.168.200.13:80 weight=1;
    }

location / {
          proxy_pass http://nginx_server;
          proxy_set_header Host $http_host;
        }

五:nginx_check.sh shell文件,配置为周期性任务

[root@localhost ~]# vim /shell/nginx.check.sh

脚本一 

#!/bin/bash
count="$(ps -C nginx --no-header|wc -l)"
if [ $count -eq 0 ]
then
   systemctl start nginx
  sleep 2
   if [ ps -C nginx --no-header | wc -l -eq 0 ]
then
      systemctl stop keepalived
     fi
fi

脚本二

***
#bin/bash
ps -C nginx --no-heading >/dev/null
if [ $? -ne 0 ]
then
        /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
        sleep 2
        ps -C nginx --no-heading >/dev/null
            if [ $? -ne 0 ]
            then
                systemctl stop keepalived
                #killall -9 keepalived
            fi
fi
***

[root@localhost ~]# chmod +x /shell/nginx_check.sh

六:配置测试页

192.168.200.10

[root@localhost ~]# cat /usr/share/nginx/html/index.html
0000000000000000000000
0000000000000000000000
0000000000000000000000
0000000000000000000000
0000000000000000000000
0000000000000000000000

192.168.200.11

[root@localhost ~]# cat /usr/share/nginx/html/index.html
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111

192.168.200.12

[root@localhost ~]# cat /var/www/html/index.html
222222222222222222
222222222222222222
222222222222222222
222222222222222222
222222222222222222
222222222222222222

192.168.200.10

[root@localhost ~]# cat /var/www/html/index.html
33333333333333
33333333333333
33333333333333
33333333333333
33333333333333
33333333333333

七:测试

访问192.168.200.254


nginx与keepalived实现高可用+Apache实现负载均衡的更多相关文章

  1. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  2. 高可用 & 七层负载均衡与四层负载均衡

    内容概要 高可用 七层负载均衡 和 四层负载均衡 内容详细 一.高可用 1.什么是高可用 一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用 ...

  3. Keepalived高可用、四层负载均衡

    目录 Keepalived高可用 高可用简介 常用的工具 问题 名称解释 VRRP协议 部署keepalived 下载安装 Keepalived配置 保证nginx配置一样 解决keepalived的 ...

  4. keepalived+nginx实现HA高可用的web负载均衡

    Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用.Keepalived ...

  5. docker 部署nginx 使用keepalived 部署高可用

    一.体系架构 在Keepalived + Nginx高可用负载均衡架构中,keepalived负责实现High-availability (HA) 功能控制前端机VIP(虚拟网络地址),当有设备发生故 ...

  6. nginx使用keepalived实现高可用

    环境: 主:linux-node1  110.0.0.137 备:linux-node2  110.0.0.138   VIP: 110.0.0.120   NGINX安装: # rpm -ivh h ...

  7. Nginx与keepalived实现高可用

    主keepalived设置 #安装keepalived [root@localhost ~]# yum -y install keepalived #安装nginx [root@localhost ~ ...

  8. SpringCloud第二弹(高可用Eureka+Ribbon负载均衡)

    先建立父工程 .. ..一路next 搭建注册中心(需要建立三个工程,端口不一样) .. .. .. 修改入口类 package com.cloud.eurekaserver1111; import ...

  9. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

随机推荐

  1. java 第六周上机练习 04.09

    1.编写一个简单程序,要求数组长度为5,静态赋值10,20,30,40,50,在控制台输出该数组的值. int [] arr= {10,20,30,40,50}; for(int i=0;i<a ...

  2. 关于C#三层架构增删改查中的“删除”问题

    序: 刚学习C#,经过一段时间学习,现在正在做一个简单的前后台联通的项目(主要是C#三层架构实现增删改查).分享一点儿小经验,也供自己以后可以回头看看自己的码农之路. 内容: 主要分享的是一条删除会用 ...

  3. Mac 开发工具信息的备份

    相信大部分程序员都对开发环境的工具都有一些特殊的执念(???),如果在自己不习惯的环境中工作完全无法开展,怎么这个工具没有那个字体难受,我本人就是,换了新的 Mac 电脑后如何快速恢复到之前的开发工具 ...

  4. 九九乘法表 C语言

    无需输入,直接输出九九乘法表,特别简单. 运行结果如下: #include<stdio.h> int main() { ; ; , j = ; ; i < ; i++,b++) { ...

  5. 基于 Hudi 和 Kylin 构建准实时高性能数据仓库

    在近期的 Apache Kylin × Apache Hudi Meetup直播上,Apache Kylin PMC Chair 史少锋和 Kyligence 解决方案工程师刘永恒就 Hudi + K ...

  6. Linux学习,账号管理与权限管理

    linux系统本来不认识账号,只是通过UID(用户ID)和GID(所属组ID)来区分账号属性的.而这对应的目录如下: UID ===> /etc/passwd GID ===> /etc/ ...

  7. git log查看某文件的修改历史

    1. git log filename 可以看到fileName相关的commit记录 2. git log -p filename可以显示每次提交的diff 3. 只看某次提交中的某个文件变化,可以 ...

  8. ubuntu 虚拟机复制后打开蓝屏解决办法

    sudo apt-get install xserver-xorg-lts-utopic sudo dpkg-reconfigure xserver-xorg-lts-utopic reboot

  9. 一、华为模拟器eNSP下载与安装教程

    简单介绍一下 eNSP: eNSP是一款由华为提供的免费的图形化网络仿真工具平台,它将完美呈现真实设备实景(包括华为最新的ARG3路由器和X7系列的交换机),支持大型网络模拟,让你有机会在没有真实设备 ...

  10. 将class 编译后文件内容输入到 文本文件中的命令

    javap -c InnerTest$1 > InnerTest$1.txt