一:实验环境

主nginx负载均衡器:10.192.203.201  (通过keepalived配置了VIP:10.192.203.106供外使用)
副nginx负载均衡器:10.192.203.102(通过keepalived配置了VIP:10.192.203.106供外使用)

后端代理的web服务器:
10.192.203.201:81
10.192.203.102:81

--由于是在自己虚拟机里实验的,所以这里一共使用了两台服务器。Nginx服务器最好能和web服务器分离。

二:实验步骤

2.1 安装web服务器

2.2 安装Nginx

在两台服务器上分别安装nginx,实验步骤参考:

安装部署nginx_雅冰石的专栏-CSDN博客

2.3 配置nginx

#代理两台web服务器

修改两台nginx服务器配置文件:

vi /usr/local/nginx/conf/nginx.conf

修改前:

修改后(添加ustream……,修改server里的location /部分):

注意:proxy_pass http://webservers的webservers需要和upstream 后的内容保持一致。

重新加载配置文件(可以不用重启nginx):

/usr/local/nginx/sbin/nginx -s reload

#测试效果

这里以10.192.203.201为例。

先修改两台web服务器默认调用的文件index.html

[root@web1 ~]# echo"<h1>web1.test.com</h1>" > /var/www/html/index.html

[root@web2 ~]# echo"<h1>web2.test.com</h1>" > /var/www/html/index.html

多次刷新,可以看到有时调用的是web1,有时调用的是web2,说明做到了负载均衡。

也可以通过查看apache 访问日志,来查看nginx当时将请求发送到了哪台web服务器。

2.4 ngnix实现动静态分离

动态的由apache处理,静态的由Nginx处理。

vi /usr/local/nginx/conf/nginx.conf

在server{}里添加:

location ~\.(php)?$ {proxy_set_header X-Real-IP$remote_addr;proxy_pass http://webservers;}location ~.*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|js|css)${root /usr/local/nginx/dandan;}

如图:

/*

如果后端代理的是tomcat或者jboss的话,将location ~ \.(php)?$ {

proxy_set_header X-Real-IP$remote_addr;

proxy_pass http://webservers;

}

改为:  location ~  \.(jsp|do)$ {

proxy_pass http://webservers;

proxy_set_header  X-Real-IP  $remote_addr;

}即可。

如图:

*/

在/usr/local/nginx/下新建一个dandan目录,并在该目录下新建一个a.html文件,添加内容:this is from nginx dir

测试静态页面:

测试动态页面

/*

确保web服务器上已经安装PHP

# sudo yum install php

# sudo /etc/init.d/httpd restart

*/

echo"<?php phpinfo(); ?>" > /var/www/html/info.php

验证php是否是通过apache处理的:
关闭apache再测试访问php页面,看到访问不到php,但是能访问到静态页面

[root@PChtml]# service httpd stop

Stoppinghttpd:                                           [  OK  ]

2.5 nginx结合keepalive

nginx结合keepalive可以实现nginx的高可用。

2.5.1 安装keepalive

yum install -y popt-devel
cd /usr/local/src
tar zxvf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure --prefix=/
make
make install

2.5.2 新建检查nginx脚本

#发现nginx关闭,就将其启动

vi /root/check_nginx.sh
if [ "$(ps -ef | grep "nginx:master process"| grep -v grep )" == "" ]thenservice nginx startelseecho "nginx is running"
fi

chmod +x /root/check_nginx.sh

2.5.3 修改配置文件

--修改两台keepalived服务器配置文件

vi /etc/keepalived/keepalived.conf

#ConfigurationFile for keepalived
global_defs {
notification_email {                        ######定义接受邮件的邮箱wangjj@hrloo.com}notification_email_from jiankong@staff.tuge.com    ######定义发送邮件的邮箱smtp_server mail.tuge.comsmtp_connect_timeout 10
}
vrrp_script check_nginx {                   ######定义监控nginx的脚本script "/root/check_nginx.sh"interval 2                            ######监控时间间隔weight 2                              ######负载参数}
vrrp_instance vrrptest {                 ######定义vrrptest实例state BACKUP              ######服务器状态interface eth0                     ######使用的接口virtual_router_id 51               ######虚拟路由的标志,一组lvs的虚拟路由标识必须相同,这样才能切换priority 150                       ######服务启动优先级,值越大,优先级越高,BACKUP 不能大于MASTERadvert_int 1                        ######服务器之间的存活检查时间
authentication {auth_type PASS                     ######认证类型auth_pass ufsoft       ######认证密码,一组lvs 服务器的认证密码必须一致
}
track_script {                              ######执行监控nginx进程的脚本check_nginx}
virtual_ipaddress {                         ######虚拟IP地址10.192.203.106
}
}
virtual_server 10.192.203.106 80 {
delay_loop 60
lb_algo wlc
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 10.192.203.201 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 5
}}
real_server 10.192.203.202 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 5
}}
}

#注意,需要修改下从的priority的值 ,改成比主的小。

2.5.4  vi /etc/sysconfig/iptables

#注意,在两台机器上都要修改。添加:

-A INPUT -d 10.192.203.106/32 -j ACCEPT

-A INPUT -d 224.0.0.18 -j ACCEPT

#第二行意思是添加VRRP通讯支持

修改完后,重启防火墙

service iptables restart

或者执行:iptables -I INPUT 4 -p vrrp -j ACCEPT

2.5.5 启动keepalived

在两台服务器上分别启动:
service keepalived start

分别执行ip addr命令,可以在最先启动的机器上看到虚拟IP.如:

 [root@PCkeepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu16436 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000link/ether 08:00:27:04:05:16 brd ff:ff:ff:ff:ff:ffinet 10.192.203.201/24 brd 10.192.203.255 scope global eth0inet 10.192.203.106/32 scope global eth0inet6 fe80::a00:27ff:fe04:516/64 scope linkvalid_lft forever preferred_lft forever
3: eth1:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000link/ether 08:00:27:3a:ec:3c brd ff:ff:ff:ff:ff:ffinet 10.0.0.1/24 brd 10.0.0.255 scope global eth1inet6 fe80::a00:27ff:fe3a:ec3c/64 scope linkvalid_lft forever preferred_lft forever

2.5.6 验证

关掉主的nginx,看到vip漂移到了从,且仍然能通过虚拟IP均衡地访问web服务器。

[root@PC keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu16436 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000link/ether 08:00:27:04:05:16 brd ff:ff:ff:ff:ff:ffinet 10.192.203.102/24 brd 10.192.203.255 scope global eth0inet 10.192.203.106/32 scope global eth0inet6 fe80::a00:27ff:fe04:516/64 scope linkvalid_lft forever preferred_lft forever

同理nginx也可以代理tomcat,jboss等。

本篇文章参考:Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解,http://ju.outofmemory.cn/entry/52165

nginx+keepalive实现高可用负载均衡相关推荐

  1. keepalive+nginx实现负载均衡高可用_超详细的LVS+keepalived+nginx实现高性能高可用负载均衡集群教程...

    概述 前面已经介绍了前两部分内容,下面主要介绍在nginx服务器方面的配置和测试整个集群是否可用. 在realserver端配置VIP 1.两台nginx服务器都要执行下面脚本: #vi /etc/r ...

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

    转载自 https://www.cnblogs.com/mrlapulga/p/6857294.html 一 环境介绍 1.操作系统 CentOS Linux release 7.2.1511 (Co ...

  3. Centos7+Nginx+Keepalived实现Apache服务的高可用负载均衡

    Centos7+Nginx+Keepalived实现Apache服务的高可用&负载均衡 今天是2017年的第一天,昨天也就是2016年的最后一天,我尝试部署了Centos7+Nginx+Kee ...

  4. 搭建Keepalived+Nginx高可用负载均衡服务器

    一.服务器搭建策略 单机模式: 只有一台应用服务器,组成一个单机模式 优点:简单方便(搭建.运营.维护) 缺点:不能出故障(停电.断网.系统崩溃.硬件老化.性能瓶颈) 应用场景:小型项目(几十个人) ...

  5. 汇总-13台虚拟机搭建一个高可用负载均衡集群架构

    要求 用13台虚拟机搭建一个高可用负载均衡集群架构出来,并运行三个站点,具体需求如下. 设计你认为合理的架构,用visio把架构图画出来 搭建lnmp.tomcat+jdk环境 三个站点分别为:dis ...

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

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

  7. ngnix+keepalived 实现N主高可用负载均衡web群集

    ngnix+keepalived 实现N主高可用负载均衡web群集 思路: 总结一下最近学习的nginx+keepalived 的负载均衡架构,发现linux的群集系统都是负载均衡层加服务器群组层,实 ...

  8. RHCS套件实现高可用负载均衡集群(三)——共享存储

    注:此博文在博文"RHCS套件实现高可用负载均衡集群(二)"的基础上完成 实验开始前设置实验环境 target端配置--server3 [root@server3 ~]# yum ...

  9. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成高性能高可用组件 Keepalived_03

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

最新文章

  1. textarea去掉回车换行
  2. GMIS 2017 大会陈雨强演讲:机器学习模型,宽与深的大战
  3. java对象序列化克隆_Java8基础知识(三)对象克隆与序列化
  4. 在抽象类中可以没有抽象方法_是否可以在最终课程中使用抽象方法?
  5. Docker完全自学手册
  6. 定期清理sql2005事务日志
  7. 概率论 方差公式_【考研数学】概率论与数理统计
  8. 【项目经理之修炼】 全文索引
  9. Shell脚本实战:日志关键字监控+自动告警
  10. Gibbs 采样定理的若干证明
  11. Android Baseline小tip
  12. scala中的apply方法与unapply方法
  13. WordPress实现前台登录or注册功能
  14. 贴片元器件与插件元器件的区别在哪?
  15. echarts宽度随屏幕宽度改变自适应
  16. 第一行代码-第二版(郭霖著)笔记二(Activity)
  17. 图解TCP/IP网络知识轻松入门 读书笔记(五)
  18. 关于ALEXA的流量排名的参数介绍
  19. Android学习笔记——归纳整理
  20. python统计文本字数_Python 简单应用--文章字数统计

热门文章

  1. KALI - 暴破wifi之抓取握手包
  2. C#获取系统空闲时间
  3. 法国敏捷开发与敏捷测试模式
  4. python中plotly subplot的用法_matplotlib 中的subplot的用法
  5. UVa 10115 - Automatic Editing
  6. 啊哈C语言 第五章 【代码】【习题答案】
  7. IAMP服务安装,论坛启动
  8. 三维声场(虚拟3D音频)学习总结(1):基本概念
  9. 【树】二叉树的两种非递归遍历方法
  10. maple化简_在线测试(Maple TA)使用须知yx - 课程中心.PDF