高可用:高可用(High availability,缩写为 HA),是指系统无中断地执行其功能的能力,代表系统的可用性程度。
Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性;
Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。
支持 SSL 和 TLSSNI。
Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
首先进行解压
tar zxf nginx-1.21.1.tar.gz
安装依赖性
yum install -y gcc pcre-devel openssl-devel
对源码进行编译,在这一部分,我们可以根据自己的需求进行编译
./configure --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/nginx
然后我们进行make、make install 进行安装
源码编译三部曲:进行完解压之后,condigure;make;make install
这些进行完之后,我们的nginx已经安装成功,nginx的开启非常简单,直接nginx命令就可以开启,开启之后,我们可以通过查看80端口来检查是否开启,也可以ps进行查看进程
[root@server1 conf]# netstat -antlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10134/nginx: master
10134 ? Ss 0:00 nginx: master process nginx
10170 ? R 0:00 [kworker/1:1]
10177 ? S 0:00 nginx: worker process
10178 ? S 0:00 nginx: worker process
以上两种方式都可以看到nginx已经开启
我们可以对其做一个软连接,方便我们使用
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
打开nginx的配置文件,添加用户、用户组
首先添加nginx用户
useradd -M -d /usr/local/nginx/ -s /sbin/nologin nginx
user nginx nginx;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
我们可以将cpu与进程进行捆绑,也就是一个cpu对应一个进程,01 10 代表一个cpu开启时另一个关闭,以此类推,多个cpu也可以用这种方式来进行捆绑
user nginx nginx;
worker_processes 2;
worker_cpu_affinity 01 10;
我们在nginx.conf中添加负载均衡,可以给某台真实主机添加权重,比如给10主机配置权重为2,那么在需求分配的时候,10主机就会是3主机二倍的响应
http {
upstream westos {
server 192.168.110.10:8000 weight=2;
server 192.168.110.3:80;
}
include mime.types;
default_type application/octet-stream;
我们再给我们想要设置负载均衡的网站代理到我们设置的负载均衡上,这个时候我们再次访问这个网址,就会被认为访问代理的负载均衡器而按照权重分配给真实主机(首先要添加解析)
server {
listen 80;
server_name www.westos.org;
location / {
proxy_pass http://westos;
}
}
效果如下,1.1的响应是1.3的两倍,说明我们利用nginx实现了负载均衡
[root@server5 ~]# for i in {1..10}; do curl www.westos.org;done
server1.3
server1.1
server1.1
server1.3
server1.3
server1.1
server1.1
server1.3
server1.1
server1.1
如果我们此时停掉真实主机中的一台,再次测试会发现调度器自动将所有的需求分配给正常运行的真实主机,在这一点上nginx要更加合理
[root@server1 ~]# curl 192.168.110.3
server1.3
[root@server5 ~]# for i in {1..10}; do curl www.westos.org;done
server1.3
server1.3
server1.3
server1.3
server1.3
server1.3
server1.3
server1.3
server1.3
server1.3
那如果所有的真实主机都down了,再次测试就会报错、
[root@server5 ~]# curl www.westos.org
502 Bad Gateway</title></head>
502 Bad Gateway</h1></center>
nginx/1.21.1</center>
</body>
</html>
这个时候我们就得添加备机,以防止出现这种情况,我们可以将本机设置为备机,那么在真实主机全部down的时候,再次测试,就不会出现502报错
http {
upstream westos {
server 192.168.110.10:8000 weight=2;
server 192.168.110.3:80;
server 127.0.0.1:80 backup;
}
[root@server5 ~]# curl www.westos.org
<!DOCTYPE html>
Welcome to nginx!</title>