简介
这种方案,使用一个VIP地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备机在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案并不经济实惠。
一、网络拓扑
四台虚拟机如下所示:
为什么使用keepalived呢?
使用keepalived就用来做高可用的,提供虚拟VIP
二、软件安装
Nginx-Master和Nginx-Slave两台服务器上的安装操作完全一样
1、更新系统[root@Nginx-Master ~]# yum -y update
2、安装依赖软件
[root@Nginx-Master ~]# yum install -y libnl*
[root@Nginx-Master ~]# yum -y install openssl openssl-devel kernel-devel #可分别安装
[root@Nginx-Master ~]# yum -y install gcc gcc-c++ autoconf automake make #可分别安装
[root@Nginx-Master ~]# yum install -y libnfnetlink-devel zlib zlib-devel gcc gcc-c++ openssl openssl-devel openssh
说明:
pcre: 用来作地址重写的功能。zlib:nginx 的gzip模块,传输数据打包,省流量(但消耗资源)。
openssl:提供ssl加密协议
安装 mailx 包,用于发送邮件
[root@Nginx-Master ~]# yum -y install mailx
[root@Nginx-Master ~]# mailx -V
12.5 7/5/10
[root@Nginx-Master ~]# vim /etc/nail.rc
set from=xxxx@163.com(邮箱地址)
set smtp=smtp.163.com(smtp服务器)
set smtp-auth-user=xxxx@163.com(用户名)
set smtp-auth-password=xxxxxxxx(邮箱密码)
set smtp-auth=login
测试
[root@Nginx-Master ~]echo 123 | mailx -v -s "test" xxxx@qq.com
[root@Nginx-Master ~]echo "hello world" | mail -s 'test666' xxxx@qq.com
或者
[root@Nginx-Master ~]mailx -v -s "test" xxxxx@qq.com<test.txt
3、安装keepalived和nginx
3.1.1、下载
[root@Nginx-Master ~]# cd /usr/local/src/
[root@Nginx-Master src]# wget http://nginx.org/download/nginx-1.9.7.tar.gz
[root@Nginx-Master src]# wget wget http://www.keepalived.org/software/keepalived-1.3.5.tar.gz
3.1.2、解压
[root@Nginx-Master src]# tar -zvxf nginx-1.9.7.tar.gz
[root@Nginx-Master src]# cd nginx-1.9.7
3.1.3、建立Nginx用户[root@Nginx-Master nginx-1.9.7]# groupadd -g 1001 nginx
[root@Nginx-Master nginx-1.9.7]# useradd -u 900 nginx -g nginx -s /sbin/nologin
[root@Nginx-Master nginx-1.9.7]# tail -1 /etc/passwd
nginx:x:900:1001::/home/nginx:/sbin/nologin
3.1.4、安装Nginx [root@Nginx-Master nginx-1.9.7]#./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-http_gzip_static_module --user=nginx --group=nginx && make && make install
[root@Nginx-Master nginx-1.9.7]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
3.1.5、安装keepalived[root@Nginx-Master src]# tar -zvxf keepalived-1.3.5.tar.gz
[root@Nginx-Master src]# cd keepalived-1.3.5
[root@Nginx-Master keepalived-1.3.5]# ./configure
Keepalived configuration
------------------------
Keepalived version : 1.3.5
Compiler : gcc
Preprocessor flags : -I/usr/include/libnl3
Compiler flags : -Wall -Wunused -Wstrict-prototypes -Wextra -g -O2
Linker flags :
Extra Lib : -lcrypto -lssl -lnl-genl-3 -lnl-3
Use IPVS Framework : Yes
IPVS use libnl : Yes
IPVS syncd attributes : No
IPVS 64 bit stats : No
fwmark socket support : Yes
Use VRRP Framework : Yes
Use VRRP VMAC : Yes
Use VRRP authentication : Yes
With ip rules/routes : Yes
SNMP vrrp support : No
SNMP checker support : No
SNMP RFCv2 support : No
SNMP RFCv3 support : No
DBUS support : No
SHA1 support : No
Use Debug flags : No
Stacktrace support : No
Memory alloc check : No
libnl version : 3
Use IPv4 devconf : No
Use libiptc : No
Use libipset : No
init type : systemd
Build genhash : Yes
Build documentation : No
[root@Nginx-Master keepalived-1.3.5]# make && make install
[root@Nginx-Master keepalived-1.3.5]# cp /usr/local/src/keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/init.d/keepalived
[root@Nginx-Master keepalived-1.3.5]# ll /etc/init.d/ | grep keepalived
-rwxr-xr-x 1 root root 1308 5月 28 16:01 keepalived
[root@Nginx-Master keepalived-1.3.5]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@Nginx-Master keepalived-1.3.5]# mkdir /etc/keepalived
[root@Nginx-Master keepalived-1.3.5]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[root@Nginx-Master keepalived-1.3.5]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
将nginx和keepalive服务加入开机启动服务
[root@Nginx-Master keepalived-1.3.5]# echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
[root@Nginx-Master keepalived-1.3.5]# echo "/etc/init.d/keepalived start" >> /etc/rc.local