使用Nginx已经有很长一段时间,但是最近才去实践利用Nginx做负载均衡和高可用性。
大致思路:根据keepalived的特性,通过一个虚拟ip来实现主从服务器的切换,如果一台服务器宕机,可以自动切换到另一台备份服务器,从而不影响用户的访问。
以下是我的安装配置步骤,请大家参考指正。
1:服务器准备
准备两台ubuntu虚拟主机服务器,对应的IP分别是 192.168.1.100 192.168.1.200
两台主机的ip一定要在相同的网段
2:虚拟IP准备
sudo ifconfig eth0:0 192.168.1.150 netmask 255.255.255.0
然后查看ifconfig,不难发现与之前的ifconfig 的不同。也可以通过ip a查看,对应的网卡eth0有两个ipaddress
两台虚拟主机要使用相同的虚拟IP: 192.168.1.150
3:安装nginx
sudo apt-get install nginx
安装完成之后,ps -ef|grep nginx 查看nginx的进程,如果没问题,可以查看http://192.168.1.100 如果显示正常,说明nginx服务正常启动。
nginx的配置如下:
user www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; fastcgi_buffer_size 64k; fastcgi_buffers 16 64k; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; upstream server_lb { server 192.168.1.100:9000; //9000为php的端口 server 192.168.1.200:9000; ip_hash; } server { listen 80; server_name _; #root /var/www/html/demo/public; #charset koi8-r; try_files $uri $uri/ $uri.php?$args /index.php; location ~ \.php$ { fastcgi_pass server_lb;//通过fastcgi进行负载均衡 include fastcgi_params; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
两台服务器的nginx配置一致
4:安装keepalived
sudo apt-get install keepalived
安装完成之后,查看进程发现并没有keepalived的进程,这是因为keepalived配置文件不存在,需要用户自己创建一个keepalived.conf文件存放到/etc/keepalived目录
vrrp_script chk_nginx { script "/etc/keepalived/check_nginx.sh" //检测nginx进程的脚本 interval 2 weight 2 } global_defs { notification_email { //可以添加邮件提醒 } } vrrp_instance VI_1 { state MASTER //主服务器 interface eth0 virtual_router_id 51 mcast_src_ip 192.168.1.100 priority 250 advert_int 1 authentication { auth_type PASS auth_pass 123456 } track_script { chk_nginx } virtual_ipaddress { 192.168.1.150 } }
两台服务器的keepalived.conf文件除了优先级,state和mcast_src_ip不一样,其他的完全一致,但是需要注意的几点是:
- 主服务器的state为MASTER,从服务器的state为BACKUP
- 主服务器的priority一定要比从服务器的priority大
- mcast_src_ip就是对应服务器的局域网ip
- “{”前面一定要有个空格,不能跟前面的字符连起来,否则出现问题很难发现
- check_nginx.sh脚本文件的执行权限一定要正确。
- check_nginx.sh的代码如下:
#more /etc/keepalived/check_http.sh #!/bin/bash #代码一定注意空格,逻辑就是:如果nginx进程不存在则启动nginx,如果nginx无法启动则kill掉keepalived所有进程 A=`ps -C nginx --no-header |wc -l` if [ $A -eq 0 ];then /etc/init.d/nginx start sleep 3 if [ `ps -C nginx --no-header |wc -l`-eq 0 ];then killall keepalived fi fi
配置文件完成之后,sudo /etc/init.d/keepalived start,然后再查看下keepalived的进程是否存在,如果存在,再检查keepalived的log(sudo tail /var/log/syslog),如果看到nginx Keepalived_vrrp: VRRP_Script(chk_nginx) succeeded,则说明配置成功。
两台服务器的keepalived配置和启动命令是一致的
5:测试
因为check_nginx的缘故,当启动keepalived是,nginx也会同时被启动,所以此时,查看nginx和keepalived的进程应该都是存在的,否则就是配置有问题。
现在访问http://192.168.1.150,如果访问正常,此时应该显示的是主服务器的页面,也就是192.168.1.100的页面,否则也是配置有问题。
然后在关闭主服务器的nginx访问,访问http://192.168.1.150页面应该正常,因为check_nginx的缘故。
再关闭主服务器的keepalived进程,则此时访问http://192.168.1.150应该显示的是从服务器的页面,也就是192.168.1.200的页面,否则也是配置不正确。
如果再关闭从服务器的nginx和keepalived则http://192.168.1.150无法访问。
以上就是我的配置步骤,很粗略,还希望大家多指点。
另外,以下是版本信息
ubuntu:Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-generic x86_64)
Keepalived: v1.2.2
nginx version: nginx/1.1.19
相关推荐
Keepalived是一款用于实现高可用性的工具,它可以监控并管理服务,当主服务器失效时,能将流量切换到备用服务器。安装过程如下: ```bash # 对于Debian/Ubuntu sudo apt-get update sudo apt-get install ...
总之,"nginx+tomcat实现负载均衡1"的学习将涵盖Nginx的基本操作、负载均衡配置、与Tomcat的集成以及高可用性的实现,这些都是构建高性能Web服务的关键技术。通过这些知识,开发者可以设计出更健壮、高效的分布式...
在现代互联网服务中,高可用性和负载均衡是不可或缺的要素。Nginx是一款高性能的HTTP和反向代理服务器,常用于处理静态文件、缓存、负载均衡等任务;而Keepalived则是一个用于网络服务高可用性的开源项目,主要用于...
在Ubuntu 15操作系统上,采用Nginx 1.8.0作为Web服务器,Tomcat 7.0.64作为应用服务器,以及Keepalived 1.2.19和JDK 1.7.0_79-b15,我们可以通过以下步骤实现Nginx的高可用: - **环境准备**:设定每台服务器的IP...
Nginx 作为高性能的 Web 服务器和反向代理服务器,而 Keepalived 则主要用于高可用性(HA)和负载均衡。将两者结合使用可以实现服务的高可用性和动态负载均衡,从而提高系统的稳定性和性能。 本文主要介绍如何通过 ...
在构建高可用性和负载均衡的Web服务环境中,Keepalived和Nginx的结合使用是常见的一种解决方案。本文档详细介绍了如何在Linux系统上通过编译安装的方式设置一个基于Keepalived和Nginx的双机互备负载均衡系统。 首先...
Keepalived是一款开源软件,主要用于网络服务的负载均衡和故障检测。它通常与Nginx、HAProxy等配合使用,但在Redis场景下,Keepalived可以用来实现虚拟IP漂移,当主服务器出现故障时,自动将网络请求切换到备用...
8. **负载均衡**:除了故障转移,Keepalived还可以配合其他工具(如Nginx、HAProxy)实现负载均衡,将请求分发到多个服务器,提高系统整体性能和可用性。 在实际部署中,需要注意的是,Keepalived的配置文件应根据...
在现代互联网服务中,确保Web服务器的高可用性至关重要,因为这直接影响到网站或应用的稳定性和用户体验。本文档将详细讲解如何通过修改启动web服务器、安装配置Nginx、安装及配置Keepalived来实现Nginx的高可用部署...
首先,LVS是基于Linux内核的虚拟服务器技术,它可以通过IP负载均衡和TCP负载均衡来分散服务请求,实现高可用性和高性能。LVS工作在四层(TCP/UDP)和七层(HTTP),可以根据不同的需求选择合适的工作模式。 接着,...
在IT行业中,Keepalived和Nginx是两个非常重要的组件,它们被广泛用于构建高可用性和负载均衡的网络服务。Keepalived是一款基于VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)的开源软件,主要用于...
Keepalived是一个开源项目,主要用于网络服务的高可用性(High Availability, HA)。它提供了一种基于VRRP(Virtual Router Redundancy Protocol)协议的解决方案,确保在网络服务出现故障时能够快速切换到备用...
**Keepalived** 是一个开源项目,主要用于实现IP负载均衡和高可用性。它通过VRRP(虚拟路由冗余协议)来监控和管理网络服务,当主服务器出现故障时,可以快速将服务切换到备用服务器,确保服务的不间断。Keepalived...
Keepalived是一款开源的网络和服务监控系统,其主要功能是实现基于VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)的高可用性解决方案。本文将深入探讨Keepalived 1.2.13版本中的关键特性、配置与...
【描述】: Keepalived是一款开源的、基于LVS(Linux Virtual Server)的高可用性解决方案,它主要用于实现负载均衡和故障转移,确保服务的持续稳定运行。Keepalived通过VRRP(Virtual Router Redundancy Protocol,...
Keepalived与Nginx、HAProxy、LVS等负载均衡器配合使用,可以提供强大的服务冗余和故障恢复功能。 【安装Keepalived】 1. **系统依赖检查**:在安装Keepalived之前,需要确保系统已经安装了必要的依赖,如`iputils...
Keepalived是一款开源的网络和服务监控软件,它主要用于实现Linux服务器间的负载均衡和高可用性。在系统集群中,Keepalived与Nginx、HAProxy等配合使用,可以确保当主服务器出现故障时,服务能够自动切换到备用...
6. **keepalived-1.2.7.tar.gz**: Keepalived 是一个基于VRRP(Virtual Router Redundancy Protocol)的高可用性工具,主要用于实现Linux系统的负载均衡和故障转移。在主备切换中,Keepalived 负责监控主服务器的...
- **LVS+Keepalived负载均衡**:使用Linux Virtual Server(LVS)和Keepalived实现高可用的负载均衡解决方案。 - **Squid缓存服务器配置**:配置Squid代理服务器,减少网络带宽消耗。 6. **高并发系统内核优化**:...