nginx 负载均衡器和高可用
Nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx
Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性:
在连接高并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。
Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。无缓存的反向代理加速,简单的负载均衡和容错。
代理服务器
作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务器。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级
一、安装部署
1)下载解压
tar zxf nginx-1.10.1.tar.gz
2)进行原码安装
Vim /mnt/nginx-1.10.1/auto/cc/gcc #设置安装组件
./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_stub_status_module #安装检查
yum install -y pcre-devel zlib-devel #将CFLAGS="$CFLAGS -g" 行注释掉
./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_stub_status_module
make
make install
cd /usr/local/nginx/sbin
./nginx #执行脚本开启服务
测试
useradd -u 800 nginx 添加nginx账户
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #对目录进行软连接
nginx -s reload #重新加载nginx
vim /etc/security/limits.conf
vim /usr/local/nginx/conf/nginx.conf #修该配置文件
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem;
ssl_certificate_key cert.pem; #自己制作的证书名
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
制作证书
[[email protected] sbin]# cd /etc/pki/tls/certs/
[[email protected] certs]# make cert.pem
[[email protected] certs]# mv cert.pem /usr/local/nginx/conf/
[[email protected] certs]# nginx -s reload
https://172.25.50.1 #浏览器中查看证书
sendfile on;
tcp_nopush on; #连接超时
tcp_nodelay on; #降低网络延时
添加监控模块
location /status{
stub_status on;
access_log off; #监控
allow 172.25.50.250; #访问名单,此时只有250主机可以访问
deny all;
}
server {
listen 80;
server_name www.westos.org;
location /{
root /www1; #默认发布目录
index index.html; #默认发布文件
}
}
[[email protected] certs]# nginx -s reload
[[email protected] certs]# mkdir /www1
[[email protected] certs]# cd /www1/
[[email protected] www1]# vim index.html
[[email protected] www1]# cat index.html
<hi> westos.server1</hi>
[[email protected] www1]#
设置虚拟主机
server {
listen 80;
server_name bbs.westos.org;
location /{
root /www2;
index index.html;
}
}
[[email protected] www1]# mkdir /www2
[[email protected] www1]# vim /www2/index.html
[[email protected] www1]# cat /www2/index.html
<hi>bbs.westos.com<hi/>
server {
listen 80;
server_name www.westos.org;
location /{
#root /www1;
#index index.html;
proxy_pass http://westos; #调度
}
}
http {
upstream westos { #调度地址
server 172.25.50.2:80 ;
server 172.25.50.3:80 ;
}
include mime.types;
default_type application/octet-stream;
http {
upstream westos { #调度地址
server 172.25.50.2:80 weight=2; 加权重
server 172.25.50.3:80 ;
}
http {
upstream westos { #调度地址
server 172.25.50.2:80 ;
server 172.25.50.3:80 backup; 作备用
}
Server2 http 服务关闭时
nginx 高可用
打开新的虚拟机server4,将server1上/usr/local/nginx 远程复制给server4/usr/local/nginx
[[email protected] nginx]# scp -r * [email protected]:/usr/local/nginx/
[[email protected] nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[[email protected] nginx]# useradd -u 800 nginx
在server1和server4上同时执行下面操作
yum install -y ricci
passwd ricci #设置ricci 密码,两台必须密码一致
/etc/init.d/ricci restart
chkconfig ricci on
在server1上
yum install -y luci #在server1 上安装luci管理软件
[[email protected] ~]# /etc/init.d/luci start #启动
chkconfig luci on #设置开机自启动
[[email protected] ~]# /etc/init.d/luci start
Start luci... [确定]
Point your web browser to https://server1:8084 (or equivalent) to access luci
[[email protected] ~]#
在浏览器中输入生成的网址进行配置
添加要管理集群
在物理主机上安装fence 软件
yum install fence-virtd.x86_64 -y
yum install -y fence-virtd-multicast.x86_64
yum install -y fence-virtd-libvirt.x86_64
fence_virtd -c #创建fence
[[email protected] usr]# mkdir /etc/cluster/
[[email protected] usr]# cd /etc/cluster/
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1 #制作钥匙
scp fence_xvm.key [email protected]:/etc/cluster/ #将钥匙分发给server1和server4
scp fence_xvm.key [email protected]:/etc/cluster/
在管理主机server1上测试fence效果
[[email protected] cluster]# fence_node server4
fence server4 success
在网页图形界面添加集群管理
添加fence
添加uuid
设置权重
scp nginx server4:/etc/init.d/ #将启动脚本分发给server1和server4
在图形界面添加启动脚本
设置ip
测试:
此时,服务在server4上运行
当server4上输入[[email protected] ~]# echo c > /proc/sysrq-trigger # 故意让系统崩溃
此时,服务转移到server1运行,server4重新启动,从而实现高可用