- 浏览: 230469 次
- 性别:
- 来自: 杭州
最新评论
-
zjilvufe:
顶!但是感觉10*60*1000,比较好,可以避免时间差问题。 ...
memcache过期时间的一点小小的分析 -
zjilvufe:
顶!但是感觉10*60*1000,比较好,可以避免时间差问题。 ...
memcache过期时间的一点小小的分析 -
zjilvufe:
顶!但是感觉10*60*1000,比较好,可以避免时间差问题。 ...
memcache过期时间的一点小小的分析 -
kentkwan:
完全看不出哪里异步新特性了 新开一个线程 servlet3以下 ...
tomcat7和Servlet3之异步特性体验 -
5cai:
D:\install\tomcat-7.0.29\webapp ...
tomcat7和Servlet3之异步特性体验
配置一:
以前写过一篇,nginx+keepalived 双机互备的文章,写那篇文章的时候没有想过如果apache或者nginx 挂了,而 keepalived 或者 机器没有死,那么主辅是不会切换的,今天就研究了一下该如何监控 nginx进程呢,看官方站看到了。vrrp_script 功能,但是用他的方法实在形不通,可能是我的方法不对,或者是个BUG。所以后来我自己写了个小脚本来完成工作。
环境
Server 1 : ubuntu-server 8.04.4 192.168.6.162
Server 2 : userver-server 8.04.4 192.168.6.188
软件
Keepalived 1.1.15
nginx-0.8.35
pcre-8.02
1.分别在两台服务器上安装nginx
tar jxvf pcre-8.02.tar.bz2
cd pcre-8.02
./configure --prefix=/usr --enable-utf8 --enable-pcregrep-libbz2 --enable-pcregrep-libz
make
make install
tar zxvf nginx-0.8.35.tar.gz
cd nginx-0.8.35
--prefix=/usr/local/nginx --with-pcre --user=www --group=www --with-file-aio --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-cc-opt=' -O3'
make
make install
2.分别在两台服务器编写配置文件
vim /usr/local/nginx/conf/nginx.conf
user www www;
worker_processes 1;
error_log logs/error.log notice;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name localhost;
index index.html index.htm;
root /var/www;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
3.分别在两台机器创建测试文件
echo "192.168.6.162" > /var/www/index.html
echo "192.168.6.188" > /var/www/index.html
4.安装 keepalived
apt-get install keepalived
5.在server 1服务器编写配置文件
vrrp_script chk_http_port {
script "/opt/nginx_pid.sh" ###监控脚本
interval 2 ###监控时间
weight 2 ###目前搞不清楚
}
vrrp_instance VI_1 {
state MASTER ### 设置为 主
interface eth0 ### 监控网卡
virtual_router_id 51 ### 这个两台服务器必须一样
priority 101 ### 权重值 MASTRE 一定要高于 BAUCKUP
authentication {
auth_type PASS ### 加密
auth_pass eric ### 加密的密码,两台服务器一定要一样,不然会出错
}
track_script {
chk_http_port ### 执行监控的服务
}
virtual_ipaddress {
192.168.6.7 ### VIP 地址
}
}
6.在 server 2 服务器 keepalived 配置
vrrp_script chk_http_port {
script "/opt/nginx_pid.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP ### 设置为 辅机
interface eth0
virtual_router_id 51 ### 与 MASTRE 设置 值一样
priority 100 ### 比 MASTRE权重值 低
authentication {
auth_type PASS
auth_pass eric ### 密码 与 MASTRE 一样
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.6.7
}
}
7.编写监控nginx监控脚本
vim /opt/nginx_pid.sh
#!/bin/bash
# varsion 0.0.2
# 根据一网友说这样做不科学,如果nginx服务起来了,但是我把keepalived 杀掉了,我的理由是,如果nginx死掉了,我觉得就很难在起来,再有就是nagios 当然要给你报警了啊。不过这位同学说的有道理,所以就稍加改了一下脚本
A=`ps -C nginx --no-header |wc -l` ## 查看是否有 nginx进程 把值赋给变量A
if [ $A -eq 0 ];then ## 如果没有进程值得为 零
/usr/local/nginx/sbin/nginx
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived ## 则结束 keepalived 进程
fi
fi
8、测试,分别在两个服务器 启动 nginx 和 keepalived
/usr/local/nginx/sbin/nginx
/etc/init.d/keepalived start
监控 server 1 的日志
Apr 20 18:37:39 nginx Keepalived_vrrp: Registering Kernel netlink command channel
Apr 20 18:37:39 nginx Keepalived_vrrp: Registering gratutious ARP shared channel
Apr 20 18:37:39 nginx Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.
Apr 20 18:37:39 nginx Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'.
Apr 20 18:37:39 nginx Keepalived_healthcheckers: Configuration is using : 3401 Bytes
Apr 20 18:37:39 nginx Keepalived_vrrp: Configuration is using : 35476 Bytes
Apr 20 18:37:40 nginx Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Apr 20 18:37:41 nginx Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Apr 20 18:37:41 nginx Keepalived_vrrp: Netlink: skipping nl_cmd msg...
Apr 20 18:37:41 nginx Keepalived_vrrp: VRRP_Script(chk_http_port) succeeded
监控 server 2的日志
Apr2018:38:23 varnish Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'.
Apr 20 18:38:23 varnish Keepalived_healthcheckers: Configuration is using : 3405 Bytes
Apr 20 18:38:23 varnish Keepalived_vrrp: Using MII-BMSR NIC polling thread...
Apr 20 18:38:23 varnish Keepalived_vrrp: Registering Kernel netlink reflector
Apr 20 18:38:23 varnish Keepalived_vrrp: Registering Kernel netlink command channel
Apr 20 18:38:23 varnish Keepalived_vrrp: Registering gratutious ARP shared channel
Apr 20 18:38:23 varnish Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.
Apr 20 18:38:23 varnish Keepalived_vrrp: Configuration is using : 35486 Bytes
Apr 20 18:38:23 varnish Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
Apr 20 18:38:25 varnish Keepalived_vrrp: VRRP_Script(chk_http_port) succeeded
看日志可以看出,两台服务器的 MASTRE 和 BACUKUP 已经都正常了
现在我们在 server 1 把 nginx 服务器停到
Server 1 $> killall nginx
这时候看server 1的日志
Apr 20 18:41:26 nginx Keepalived_healthcheckers: Terminating Healthchecker child process on signal
Apr 20 18:41:26 nginx Keepalived_vrrp: Terminating VRRP child process on signal
可以看出keepalived 的进程已经停到
这时候看server 2的日志,看是否已经接管
Apr 20 18:41:23 varnish Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Apr 20 18:41:24 varnish Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Apr 20 18:41:24 varnish Keepalived_vrrp: Netlink: skipping nl_cmd msg...
很明显的看出 server 2 已经接管了,已经变为 MASTER 了
配置二:
! Configuration File for keepalived
global_defs {
notification_email {
xiaohan@163.com
}
notification_email_from keepalived@chtopnet.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER <== 主MASTER,从为BACKUP,其他一样。
interface eth0
virtual_router_id 51
mcast_src_ip 192.168.2.24 <== 主nginx的IP地址
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass chtopnet
}
virtual_ipaddress {
192.168.2.96 <==vip 地址
}
}
重启keepalived,这里比较重要,很多朋友喜欢把sbin 里面的复制到/etc/init.d/下面,用service keepalvied restart 这种方式,不过这里不推荐,我也是这里这样做,结果出现很多的问题,建议用最老实的方法来重启:
#/usr/local/sbin/keepalived –D –f /usr/local/etc/keeplive/keepalived.conf
查看是否绑定了vip ,注意,用ifconfig是看不到的,要用ip a 来查看,切记切记。
Ok,成功,在BACKUP上也做同样的操作。
验证,其实很简单,一直ping 192.168.2.96 ,然后将主nginx的network停掉,可以看到大概有2个timeout,BACKUP在极短的时间内接替了工作。再将主的network开启,可以看到主又继续接替了BACKUP,继续工作。
配置三:
安装keepalived
tar zxvf keepalived-1.1.19.tar.gz
cd keepalived-1.1.19
./configure --prefix=/usr/local/keepalived
make
make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cd /etc/keepalived/
#####################################################
! Configuration File for keepalived
global_defs {
notification_email {
yeli4017@163.com
}
notification_email_from yeli4017@163.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id web_nginx
}
vrrp_instance VI_1 {
state MASTER
interface eth0
garp_master_delay 10
smtp_alert
virtual_router_id 51
mcast_src_ip 172.16.3.51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111chtopnet
}
virtual_ipaddress {
172.16.3.199
}
}
辅助服务器
! Configuration File for keepalived
global_defs {
notification_email {
yuhongchun027@163.com
}
notification_email_from keepalived@chtopnet.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
mcast_src_ip 172.16.3.51 <==主nginx的IP的地址
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass chtopnet
}
virtual_ipaddress {
172.16.3.199
}
}
评论
我在opensuse下安装keepalived, 编译和安装的时候都没有报错,但是最后启动keepalived的时候 不管用你所说的 /etc/init.d/keepalived start , 还是 service keepalived start ,都会报一个 /etc/rc.d/init.d/functions no such file 错误。我查看了该目录下,确实没有这个functions文件,但是我打开 init.d/keepalived文件,上面确实写的是 /etc/rc.d/init.d/functions
。这是怎么回事呢?是因为我的系统原因吗?我的系统是opensuse11.1。那这样的话,我又如何启动keepalived 呢?期待您的帮助 。谢谢
发表评论
-
facebook network-connection-class初探
2016-01-22 16:23 2221背景 网络质量 ... -
TIME_WAIT和CLOSE_WAIT(转)
2013-09-06 09:39 2431netstat -n | awk '/^tcp/ {++S ... -
压力测试(性能测试)和性能调优实战---jmeter、jamon、jconsole
2010-11-10 12:37 27042现在网站高并发情况下,上个关键功能点都需要进行压力测试, ... -
nginx upstream的5种配置方式
2010-08-31 09:45 24421、轮询(默认) 每个 ... -
apache ab压力测试
2010-08-18 19:59 1499格式: ./ab [options] [http://]hos ... -
memcache过期时间的一点小小的分析
2010-08-11 13:05 30604如果你清楚知道这一点,那就跳过吧!如果你不太清楚原因,那就 ... -
linux top
2010-07-29 18:04 1555linux top-统计信息区 top:动态观察进 ... -
memcached 缓存对象需要修改属性时候的陷阱
2010-07-23 09:02 1928类修改后需要重新计算serialVersionUID值 现 ... -
nginx 安装选项
2010-05-27 13:50 2267yum -y install pcre-devel opens ... -
debug分析问题 jps jmap jstat starce pmap pstack
2010-03-29 11:09 3729linux系统下 pstree:树 ... -
频繁分配释放内存导致的性能问题的分析(转载)
2010-03-29 09:25 2032现象 1 压力测试过程中 ... -
对jboss的一点想法
2010-03-11 20:49 1001jboss是对tomcat的优化,以前一直使用tomcat,最 ... -
杂记,常用记录
2010-02-25 16:19 1389~ 按位非(NOT) & 按位与(AND) | 按 ... -
分页的一点想法
2010-02-01 13:44 1609在基于saas结构的管理管理系统中,往往数据量会比较大,尤 ... -
我为什么不建议使用OpenDNS和Google Public DNS(转载)
2009-12-08 10:26 3519今天看到 DNSpod 某位仁兄从用户视角对 Google P ... -
svn This client is too old to work with working copy '.'; please get a newer ...
2009-11-18 16:07 4539svn up svn: This client is too ... -
Lucene开发中的总结
2009-11-06 15:37 13841、Lucene搜索结果排序和sql排序结果不一致 系 ... -
分页的思考
2009-11-02 18:58 52在基于saas结构的管理管理系统中,往往数据量会比较大 ...
相关推荐
### Keepalived+Nginx 实现高可用Web负载均衡 #### 场景需求 在现代互联网应用中,网站和应用程序需要处理大量的用户请求,并确保即使在服务器出现故障的情况下也能持续提供服务。为了满足这一需求,通常采用高可用...
LVS+Keepalived+Nginx+Tomcat 高可用集群项目 本文主要讲述了如何构建一个高可用集群项目,使用 LVS、Keepalived、Nginx 和 Tomcat 实现高可用性和负载均衡。该项目的架构中,Keepalived 负责对 LVS 架构中的调度器...
在IT行业中,网络服务的高可用性和负载均衡是至关重要的,而`keepalived`与`nginx`的结合就是一种常见的实现方式。本篇将详细阐述`keepalived`和`nginx`如何协同工作,以及如何成功配置它们,确保服务的稳定运行。 ...
在构建高性能、高可用性的Web服务时,使用Nginx+keepalived+tomcat的组合可以实现强大的负载均衡和故障转移功能。这个方案的核心思想是利用Nginx作为前端反向代理服务器,通过keepalived来确保服务的高可用性,并将...
1. **Keepalived**:负责监控和维护高可用性(HA),通过心跳检测机制确保在主服务器出现故障时,备份服务器能够迅速接管并继续提供服务。 2. **LVS (Linux Virtual Server)**:作为内核模块,提供负载均衡服务,...
- **作用**:监控Nginx服务器的状态,一旦主服务器发生故障,可以迅速将服务转移到备份服务器上,确保服务不中断。 ##### 3. Tomcat - **简介**:Apache Tomcat是一个开源的Servlet容器,它是实现SUN Microsystems...
【标签】"keepalived"是这个方案的核心组件,它提供了健康检查、故障检测和故障转移功能,确保在主服务器失效时,能将网络流量透明地导向备份服务器。 详细知识点如下: 1. **Nginx 安装**:首先,你需要在你的...
标题中的"keepalived+haproxy+nginx-脚本"指的是一个集成的高可用性和负载均衡解决方案,其中包含了三个关键组件:Keepalived、HAProxy和Nginx。这个解决方案通常用于构建高可靠的Web服务架构,确保在主服务器故障时...
为此,我们可以采用`keepalived`与`nginx`相结合的方式,构建一个高可用的负载平衡Web服务器集群。`nginx`作为知名的反向代理和负载均衡器,能够将来自客户端的请求分发到后端的多台Web服务器,从而提高服务处理能力...
### Keepalived+Nginx 实现 Web 负载均衡 #### 一、场景需求与背景 在现代互联网架构中,随着用户量级的增长及业务复杂度的提升,单一服务器往往难以满足高并发访问的需求,同时也面临着单点故障的风险。为了解决...
例如,关闭 nginx1 观察客户端访问情况,以及模拟主调度器故障查看备份调度器是否接管。 7. **后端存储服务**: - 使用 mariadb-server 部署 MySQL 数据库服务,为动态网站提供数据支持。 - 安装 NFS (Network ...
【详解Keepalived+Nginx实现高可用(HA)】 在构建高可用性(High Availability, HA)系统时,Keepalived 和 Nginx 的结合是常用的一种解决方案。本文将详细解析如何在 CentOS 7 环境下,通过 Keepalived 和 Nginx ...
当主MySQL服务器出现问题时,Keepalived会自动将VIP切换到备份服务器,同时HAProxy会根据新的配置继续进行负载均衡。这种方案不仅提高了系统的稳定性,还确保了业务连续性,降低了因数据库故障导致的服务中断风险。
本文将详细介绍如何在CentOS7系统上,离线环境下安装nginx和keepalived,以实现主从热备负载均衡反向代理功能。 首先,我们关注的两个主要组件是`nginx`和`keepalived`。`nginx`是一款高性能的HTTP和反向代理服务器...
2. 模拟主Nginx服务器故障:关闭主服务器,Keepalived应自动将VIP转移到备份服务器,确保服务不中断。 通过这个架构,你可以实现一个高可用的Web服务,即使某个组件出现问题,系统也能自动切换,保持对外提供服务的...
【利用Keepalived实现Nginx高可用】 在IT领域,确保服务的高可用性是至关重要的,尤其是在处理Web服务时。Nginx作为一个流行的反向代理和负载均衡器,通常需要保持持续运行以避免单点故障。在这个场景中,我们可以...
【keepalived+nginx高可用实现方法示例】 在构建高可用性Web服务时,`keepalived`和`nginx`的结合使用是常见的解决方案。本文将深入探讨这两种技术如何协同工作,确保服务的连续性和稳定性。 1. **keepalived介绍*...
P1414_Nginx视频教程_Nginx负载均衡备份和宕机 P1515_Nginx视频教程_什么是动静分离? P1616_Nginx视频教程_Nginx实现动静分离 P1717_Nginx视频教程_什么是虚拟主机? P1818_Nginx视频教程_Nginx实现虚拟主机 P...