Skip to content

Commit b6aabaa

Browse files
committed
2016-05-08补充Keepalived内容
1 parent ce7518a commit b6aabaa

File tree

5 files changed

+243
-46
lines changed

5 files changed

+243
-46
lines changed

Keepalived-Settings/nginx_check.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/bash
2+
# 如果进程中没有nginx则将keepalived进程kill掉
3+
A=`ps -C nginx --no-header |wc -l` ## 查看是否有 nginx进程 把值赋给变量A
4+
if [ $A -eq 0 ];then ## 如果没有进程值得为 零
5+
service keepalived stop ## 则结束 keepalived 进程
6+
fi

Nginx-Install-And-Settings.md

Lines changed: 99 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,104 @@
101101
- 如果访问不了,或是出现其他信息看下错误立即:`vim /var/log/nginx/error.log`
102102

103103

104+
## 把 Nginx 添加到系统服务中
105+
106+
- 新建文件:`vim /etc/init.d/nginx`
107+
- 添加如下内容:
108+
109+
``` nginx
110+
#!/bin/bash
111+
112+
113+
#nginx执行程序路径需要修改
114+
nginxd=/usr/local/nginx/sbin/nginx
115+
116+
# nginx配置文件路径需要修改
117+
nginx_config=/usr/local/nginx/conf/nginx.conf
118+
119+
# pid 地址需要修改
120+
nginx_pid=/var/local/nginx/nginx.pid
121+
122+
123+
RETVAL=0
124+
prog="nginx"
125+
126+
# Source function library.
127+
. /etc/rc.d/init.d/functions
128+
# Source networking configuration.
129+
. /etc/sysconfig/network
130+
# Check that networking is up.
131+
[ ${NETWORKING} = "no" ] && exit 0
132+
[ -x $nginxd ] || exit 0
133+
134+
# Start nginx daemons functions.
135+
start() {
136+
if [ -e $nginx_pid ];then
137+
echo "nginx already running...."
138+
exit 1
139+
fi
140+
141+
echo -n $"Starting $prog: "
142+
daemon $nginxd -c ${nginx_config}
143+
RETVAL=$?
144+
echo
145+
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
146+
return $RETVAL
147+
}
148+
149+
# Stop nginx daemons functions.
150+
# pid 地址需要修改
151+
stop() {
152+
echo -n $"Stopping $prog: "
153+
killproc $nginxd
154+
RETVAL=$?
155+
echo
156+
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/local/nginx/nginx.pid
157+
}
158+
159+
# reload nginx service functions.
160+
reload() {
161+
echo -n $"Reloading $prog: "
162+
#kill -HUP `cat ${nginx_pid}`
163+
killproc $nginxd -HUP
164+
RETVAL=$?
165+
echo
166+
}
167+
168+
# See how we were called.
169+
case "$1" in
170+
start)
171+
start
172+
;;
173+
stop)
174+
stop
175+
;;
176+
reload)
177+
reload
178+
;;
179+
restart)
180+
stop
181+
start
182+
;;
183+
status)
184+
status $prog
185+
RETVAL=$?
186+
;;
187+
*)
188+
189+
echo $"Usage: $prog {start|stop|restart|reload|status|help}"
190+
exit 1
191+
192+
esac
193+
exit $RETVAL
194+
```
195+
196+
- 修改权限:`chmod 755 /etc/init.d/nginx`
197+
- 启动服务:`service nginx start`
198+
- 停止服务:`service nginx stop`
199+
- 重启服务:`service nginx restart`
200+
201+
104202
## Nginx 配置
105203

106204
- Nginx 默认配置文件:`vim /usr/local/nginx/conf/nginx.conf`
@@ -358,25 +456,11 @@ limit_conn slimits 5;
358456
- [nginx实现简体繁体字互转以及中文转拼音](https://www.ttlsa.com/nginx/nginx-modules-ngx_set_cconv/)
359457
- [nginx记录分析网站响应慢的请求(ngx_http_log_request_speed)](https://www.ttlsa.com/nginx/nginx-modules-ngx_http_log_request_speed/)
360458
- [nginx空白图片(empty_gif模块)](https://www.ttlsa.com/nginx/nginx-modules-empty_gif/)
361-
- []()
362-
- []()
363-
- []()
364-
- []()
365-
- []()
366-
- []()
367-
- []()
368459

369460

370461

371462
## 资料
372463

373464
- <https://help.aliyun.com/knowledge_detail/5974693.html?spm=5176.788314853.2.18.s4z1ra>
374-
- <>
375-
- <>
376-
- <>
377-
- <>
378-
- <>
379-
- <>
380-
- <>
381-
- <>
465+
- <http://www.ydcss.com/archives/466>
382466

Nginx-Keepalived-Install-And-Settings.md

Lines changed: 131 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
- Keepalived:**1.2.20**
2323
- JDK:**8u72**
2424
- Tomcat:**8.0.32**
25-
- 部署环境:
25+
- 部署环境(下文中以第几台来代表这些主机)
2626
- 虚拟 IP(VIP):192.168.1.50
2727
- 第一台主机:Nginx 1 + Keepalived 1 == 192.168.1.120(Master)
2828
- 第二台主机:Nginx 2 + Keepalived 2 == 192.168.1.121(Backup)
@@ -32,7 +32,7 @@
3232
- 第三、第四台主机部署:
3333
- JDK 的安装:[JDK 安装](JDK-Install.md)
3434
- Tomcat 的安装:[Tomcat 安装和配置、优化](Tomcat-Install-And-Settings.md)
35-
- 第一台主机部署(第二台主机也是按着这样完全配置):
35+
- 第一、二台主机部署(两台部署内容一样):
3636
- Nginx 的安装:[Nginx 安装和配置](Nginx-Install-And-Settings.md)
3737
- 添加虚拟 IP:
3838
- 复制一个网卡信息:`sudo cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0`
@@ -63,7 +63,7 @@
6363
- 解压包:`cd /opt/setups/ ; tar zxvf keepalived-1.2.20.tar.gz`
6464
- 编译:`cd /opt/setups/keepalived-1.2.20 ; ./configure --prefix=/usr/program/keepalived`
6565
- 编译安装:`make && make install`
66-
- Keepalived 设置随机启动
66+
- Keepalived 设置服务和随机启动
6767
- 复制配置文件到启动脚本目录:`cp /usr/program/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived`
6868
- 增加权限:`chmod +x /etc/init.d/keepalived`
6969
- 编辑配置文件:`vim /etc/init.d/keepalived`
@@ -87,30 +87,140 @@
8787
把 14 行的:KEEPALIVED_OPTIONS="-D",改为:
8888
KEEPALIVED_OPTIONS="-D -f /usr/program/keepalived/etc/keepalived/keepalived.conf"
8989
```
90-
- 启动服务:`service keepalived start`
9190
- 加入随机启动:`chkconfig keepalived on`
92-
- 第一台主机配置:
93-
- 健康监测脚本:``
94-
- Keepalived 配置文件编辑:``
95-
- ``
96-
- ``
97-
- ``
98-
- ``
99-
- ``
100-
- ``
101-
- ``
102-
- 第二台主机配置:
91+
- 第一、二台主机配置(两台在 Keepalived 配置上稍微有不一样):
92+
- 健康监测脚本(我个人放在:/opt/bash 目录下):[nginx_check.sh](Keepalived-Settings/nginx_check.sh)
93+
- 健康监测脚本添加执行权限:`chmod 755 /opt/bash/nginx_check.sh`
94+
- 运行监测脚本,看下是否有问题:`sh /opt/bash/nginx_check.sh`,如果没有报错,则表示改脚本没有问题
95+
- nginx 配置(两台一样配置):
96+
97+
``` nginx
98+
worker_processes 1;
99+
100+
events {
101+
worker_connections 1024;
102+
}
103+
104+
http {
105+
include mime.types;
106+
default_type application/octet-stream;
107+
108+
sendfile on;
109+
keepalive_timeout 65;
110+
111+
# (重点)
112+
upstream tomcatCluster {
113+
server 192.168.1.122:8080 weight=1;
114+
server 192.168.1.123:8080 weight=1;
115+
}
116+
117+
# (重点)
118+
server {
119+
listen 80;
120+
server_name 192.168.1.50;
121+
122+
location / {
123+
proxy_pass http://tomcatCluster;
124+
index index.html index.htm;
125+
}
126+
}
127+
}
128+
```
129+
130+
- Keepalived 配置文件编辑(第一、二台配置稍微不同,不同点具体看下面重点说明)
131+
- 编辑:`vim /usr/program/keepalived/etc/keepalived/keepalived.conf`
132+
133+
``` nginx
134+
! Configuration File for keepalived
135+
136+
# 全局配置
137+
global_defs {
138+
# 邮箱通知配置,keepalived 在发生切换时需要发送 email 到的对象,一行一个
139+
notification_email {
140+
#acassen@firewall.loc
141+
#failover@firewall.loc
142+
#sysadmin@firewall.loc
143+
}
144+
# 指定发件人
145+
#notification_email_from Alexandre.Cassen@firewall.loc
146+
# 指定smtp服务器地址
147+
#smtp_server 192.168.200.1
148+
# 指定smtp连接超时时间,单位秒
149+
#smtp_connect_timeout 30
150+
151+
router_id LVS_DEVEL
152+
vrrp_skip_check_adv_addr
153+
vrrp_strict
154+
}
155+
156+
# (重点)脚本监控实现
157+
vrrp_script check_nginx {
158+
# 运行脚本
159+
script "/opt/bash/nginx_check.sh"
160+
# 时间间隔,2秒
161+
interval 2
162+
# 权重
163+
weight 2
164+
}
165+
166+
167+
vrrp_instance VI_1 {
168+
# (重点)Backup 机子这里是设置为:BACKUP
169+
state MASTER
170+
interface eth0
171+
virtual_router_id 51
172+
# (重点)Backup 机子要小于当前 Master 设置的 100,建议设置为 99
173+
priority 100
174+
# Master 与 Backup 负载均衡器之间同步检查的时间间隔,单位是秒
175+
advert_int 1
176+
authentication {
177+
auth_type PASS
178+
auth_pass 1111
179+
}
180+
181+
# (重点)配置虚拟 IP 地址,如果有多个则一行一个
182+
virtual_ipaddress {
183+
192.168.1.50
184+
}
185+
186+
# (重点)脚本监控调用
187+
track_script {
188+
check_nginx
189+
}
190+
}
191+
```
192+
193+
194+
### 启动各自服务
195+
196+
- 四台机子都停掉防火墙:`service iptables stop`
197+
- 先启动两台 Tomcat:`sh /usr/program/tomcat8/bin/startup.sh ; tail -200f /usr/program/tomcat8/logs/catalina.out`
198+
- 检查两台 Tomcat 是否可以单独访问,最好给首页加上不同标识,好方便等下确认是否有负载
199+
- `http://192.168.1.122:8080`
200+
- `http://192.168.1.123:8080`
201+
- 启动两台 Nginx 服务:`/usr/local/nginx/sbin/nginx`
202+
- 启动两台 Keepalived 服务:`service keepalived start`
203+
- 查看 Master 和 Backup 两台主机的对应日志:`tail -f /var/log/messages`
103204

104205

105206
### 高可用测试
106207

107208
- 模拟 Keepalived 挂掉
108-
- 关闭 Master 主机的 Keepalived,查看 Master 和 Backup 两台主机的对应日志:`cat /var/log/messages`
109-
- 重新开启 Master 主机的 Keepalived,查看 Master 和 Backup 两台主机的对应日志:`cat /var/log/messages`
209+
- 关闭 Master 主机的 Keepalived,查看 Master 和 Backup 两台主机的对应日志:`tail -f /var/log/messages`
210+
- 关闭服务:`service keepalived stop`
211+
- 如果第二台机接管了,则表示成功
212+
- 重新开启 Master 主机的 Keepalived,查看 Master 和 Backup 两台主机的对应日志:`tail -f /var/log/messages`
213+
- 重启服务:`service keepalived restart`
214+
- 如果第一台机重新接管了,则表示成功
110215
- 模拟 Nginx 挂掉
111-
- 关闭 Master 主机的 Nginx,查看 Master 和 Backup 两台主机的对应日志:`cat /var/log/messages`
112-
- 重新开启 Master 主机的 Nginx,查看 Master 和 Backup 两台主机的对应日志:`cat /var/log/messages`
113-
- 完善脚本,增加 Nginx 挂掉后自动重启脚本
216+
- 关闭 Master 主机的 Nginx,查看 Master 和 Backup 两台主机的对应日志:`tail -f /var/log/messages`
217+
- 关闭服务:`/usr/local/nginx/sbin/nginx -s stop`
218+
- 如果第二台机接管了,则表示成功
219+
- 重新开启 Master 主机的 Nginx,查看 Master 和 Backup 两台主机的对应日志:`tail -f /var/log/messages`
220+
- 重启 Nginx 服务:`/usr/local/nginx/sbin/nginx -s reload`
221+
- 重启 Keepalived 服务:`service keepalived restart`
222+
- 如果第一台机重新接管了,则表示成功
223+
- 可以优化的地方,改为双主热备,监控脚本上带有自启动相关细节,后续再进行。
114224

115225

116226

@@ -119,9 +229,4 @@
119229
- <http://xutaibao.blog.51cto.com/7482722/1669123>
120230
- <https://m.oschina.net/blog/301710>
121231
- <http://blog.csdn.net/u010028869/article/details/50612571>
122-
- <>
123-
- <>
124-
- <>
125-
- <>
126-
- <>
127-
232+
- <http://blog.csdn.net/wanglei_storage/article/details/51175418>

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
## 初衷(Original Intention)
44

5-
- 本系列历时半年之久,初稿预计 2016-04 期间可以结束,所有有些文章是空白或是不完善的。感谢自己坚持下来了。
65
- 整理下自己所学
76
- 带动更多的人进入 Linux 世界,特别是做 Java 开发的人
8-
- **学得越多越是明白一个人的力量是不够的,希望你能一起参与,真心希望!!!(鞠躬)**
97
- Github 项目地址,欢迎 `Fork``Star`<https://github.com/judasn/Linux-Tutorial>
8+
- 文章中用到的一些安装包归纳整理:<http://pan.baidu.com/s/1skAwrFn>
9+
- **学得越多越是明白一个人的力量是不够的,我只是起了一个引子,希望你能一起参与,真心希望!!!(鞠躬)**
10+
1011

1112
## 目录(Contents)
1213

@@ -61,8 +62,8 @@
6162
## 下一步(Next)
6263

6364
- Apache 安装和配置
64-
- Keepalived 安装和配置
65-
- LVS 安装和配置
65+
- LVS + Keepalived 高可用
66+
- MySQL + Keepalived 高可用
6667
- Zookeeper 安装和配置
6768
- ActiveMQ 服务安装和配置
6869
- GitLab 安装和配置
@@ -81,7 +82,7 @@
8182
- 欢迎捐赠 ^_^:<http://www.youmeek.com/donate>
8283

8384

84-
## Gtihub 协同视频教程(Participate)
85+
## Github 协同视频教程(Participate)
8586

8687
- 如果您不会使用 Git 或是 Github 也没关系,请认真学习下面视频教程:
8788
- Judas.n 录制

TOC.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,5 @@
4242
- [RabbitMQ 安装和配置](RabbitMQ-Install-And-Settings.md)
4343
- [Openfire 安装和配置](Openfire-Install-And-Settings.md)
4444
- [Rap 安装和配置](Rap-Install-And-Settings.md)
45+
- [Nginx + Keepalived 高可用](Nginx-Keepalived-Install-And-Settings.md)
4546
- [黑客入侵检查](Was-Hacked.md)

0 commit comments

Comments
 (0)