1. 云栖社区>
  2. PHP教程>
  3. 正文

Ningx集群环境搭建

作者:用户 来源:互联网 时间:2017-12-01 11:27:57

集群环境搭建Ningx

Ningx集群环境搭建 - 摘要: 本文讲的是Ningx集群环境搭建, Ningx集群环境搭建Nginx是什么?Nginx ("engine x") 是⼀个⾼性能的 HTTP 和 反向代理 服务器,也是⼀个 IMAP/POP3/SMTP 代理服务器。⼀直纳闷这个X是怎么来的在⽹上查了查原来X代表很⽜逼的样⼦,


Ningx集群环境搭建Nginx是什么?Nginx ("engine x") 是⼀个⾼性能的 HTTP 和 反向代理 服务器,也是⼀个 IMAP/POP3/SMTP 代理服务器。⼀直纳闷这个X是怎么来的在⽹上查了查原来X代表很⽜逼的样⼦,Nginx就是代表⼀个⾮常⽜逼的引擎服务器系统,在很多年以前记得都是⽤的apache来作为分流以及负载均衡的作⽤,在过了⼏年中⼀个俄罗斯⼈又开发了⼀个性能更⾼的服务器来处理客户端向浏览器发出的各种请求,它从技术⾓度解决了⼤数量⾼并发的⽤户量访问,官⽹上⾯写的并发数量可以达到5万,实际项⽬应⽤中可能也打不到这么多,如果可以达到2、3万并发访问量,也是⼀个⽤户⾮常多的⽹站了。Ningx集群环境搭建Nginx与Apache服务器对⽐1.轻量级,同样起web 服务,⽐apache 占⽤更少的内存及资源 抗并发,nginx 处理请求是异步⾮阻塞的,⽽apache 则是阻塞型的,在⾼并发下nginx 能保持低资源低消耗⾼性能 。nginx运⾏起来占⽤的资源CUP⾮常少,对于启动、重启都⾮常快速,在低配电脑上也可以快速的运⾏。2.Nginx 配置简洁, Apache 复杂对于这⼀点使⽤过nginx的⽤户来说就会深有体会,如果不是学习他的原理以及各种细节,⼏乎⼀会的时间就可以搭起来⼀个nginx集群服务器,搭建可以按着下⾯的步骤⾃⼰搭建。3.最核⼼的区别在于apache是同步多进程模型,⼀个连接对应⼀个进程;nginx是异步的,多个连接(万级别)可以对应⼀个进程。4.nginx的负载能⼒⽐apache⾼很多Ningx集群环境搭建典型案例中国⼤陆使⽤nginx⽹站⽤户有:新浪、⽹易、腾讯等。这些⼤的公司都在使⽤nginx作为⽹站的负载均衡。可以说,它已经是⼀个⽐较成熟的框架,值得我们去学习和了解,通过学习和了解这个服务,也了解了⼀些多线程、阻塞、⾮阻塞的概念,多线程是⼀个很不错的提升性能的解决⽅案,但有时在多个线程之间切换以及创建关闭线程很消耗系统资源,接触的⼀些多线程模式可以解决多线程带来的并发访问问题,如果master/worker,fulture,⽣产者/消费者模式等等,在nginx⾥⾯就⽤到了⼀个多线程模式,master/worker模式,这个模式在nginx中起着重要的作⽤。Ningx集群环境搭建安装并启动Nginx1 安装#yum - -enablerepo=epel install nginx2 关闭防⽕墙Ningx集群环境搭建启动Nginx#systemctl start nginx#systemctl enable nginx在客户端浏览器验证测试Ningx集群环境搭建Nginx初始页⾯Ningx集群环境搭建Nginx服务不间断重启(平滑重启)#kill -HUP `cat /run/nginx.pod`其中 HUP信号代表的为重新加载配置,即关闭原有进程并开启新进程Ningx集群环境搭建制作虚拟主机虚拟主机配置⽂件:# vim /etc/nginx/conf.d/niliu.host.confserver {listen 80 ; //定义监听端⼜server_name www.niliu.edu; //定义主机的FQDNlocation / {index index.html; //定义索引⽂件root /usr/share/nginx/html; // 定义内容根⽬录}}Ningx集群环境搭建制作虚拟主机#cd /usr/share/nginx/html#mv index.html index.html.bf#echo “test” >> inex.html//浏览器测试Ningx集群环境搭建反向代理(nginx<—>apache)位于Internet的客户端通过企业边界设备获取企业内部的web服务器资源.Ningx集群环境搭建反向代理(nginx<—>apache)实验所需环境⼀台带有Nginx虚拟机做反向代理服务⼀台带有apache虚拟机做后台www服务Ningx集群环境搭建反向代理(nginx<—>apache)⽰意图:Ningx集群环境搭建反向代理(nginx<—>apache)编辑nginx反向代理服务器的配置⽂件#vim /etc/nginx/nginx.conf在server区段下增加内容:server{listen 80 default_server;listen [::]:80 default_server;server_name test,niliu.edu;Ningx集群环境搭建反向代理(nginx<—>apache)proxy_redirect off;proxy_set_header X-real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_header Host$http_host;location / {proxy_pass http://test1.niliu.edu/;}}Ningx集群环境搭建反向代理(nginx<—>apache)#systemctl restart nginx修改apache服务#vim /etc/httpd/conf/httpd.conf修改第196⾏:LogFormat "/"%{X-Forwarded-For}i/" %l %u %t /"%r/"%>s %b /"%{Referer}i/" /"%{User-Agent} i/"" combinedNingx集群环境搭建反向代理(nginx<—>apache)#systemctl restart httpd浏览器测试http://test.niliu.edu应该显⽰test1主机的内容Ningx集群环境搭建反向代理及负载均衡(nginx<—>apache*3)所需环境:nginx反向代理服务器1台三台apache服务并运⾏,每台页⾯内容不⼀样以便区分Ningx集群环境搭建反向代理及负载均衡(nginx<—>apache*3)⽰意图Ningx集群环境搭建反向代理及负载均衡(nginx<—>apache*3)配置Nginx#vim /etc/nginx/nginx.conf在http区段,设定负载均衡组Ningx集群环境搭建反向代理及负载均衡(nginx<—>apache*3)httpd{upstream backends{server test1.niliu.edu:80 weight=3 max_fails=3 fail_timeout=20s;server test2.niliu.edu:80 weight=2 max_fails=3 fail_timeout=20s;server test3.niliu.edu:80 weight=1 max_fails=3 fail_timeout=20s;}}Ningx集群环境搭建反向代理及负载均衡(nginx<—>apache*3)设置反向代理⾄负载均衡组server:{listen 80 default_server;listen [::]:80 default_serverserver_name test.niliu.eduNingx集群环境搭建反向代理及负载均衡(nginx<—>apache*3)proxy_redirect off;proxy_set_header X-real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_header Host$http_host;location / {proxy_pass http://backends;}}Ningx集群环境搭建反向代理及负载均衡(nginx<—>apache*3)测试#systemctl restart nginx浏览器测试http://test.niliu.edu 多次执⾏后会执⾏出各个apache的内Ningx集群环境搭建反向代理及负载均衡(nginx<—>apache*3)配置⽂件中添加如下字段即可实现nginx负载故障迁移location / {proxy_pass http://backends;proxy_next_upstream http_500 http_502 http_503 error timeoutinvalid_header; //表⽰当nginx发现服务节点错误后会⾃动将请求转发到负载均衡集群组中的另⼀个服务器上,实现故障转移include /etc/nginx/proxy.conf //设定反向代理配置,优化代理能⼒}Ningx集群环境搭建Nginx+keepalived搭建⾼可⽤集群使⽤场景:nginx做负载均衡,来达到分发请求的⽬的,但是不能很好的避免单点故障,nginx务器挂点了,那么所有的服务也会跟着瘫痪keepalived+nginx,就可以很好的解决这⼀问题Ningx集群环境搭建反向代理及负载均衡(nginx<—>apache*3)在proxy.conf中可有以下内容:proxy_redirect off; //是否对发送给客户端的URL进⾏修改例如:location: http://test.abc.com:9080/abc.html 。因为 nginx 服务器侦听的是 80 端⼜,所以这样 的 URL 给了客户端 , 必然会出错 . 针对这种情况 , 加⼀条 proxy_redirect 指令 : proxy_redirect http://test.abc.com:9080/ / , 把所有“ http://test.abc.com:9080/” 的内容替换成 “ /” 再发给客户Ningx集群环境搭建反向代理及负载均衡(nginx<—>apache*3)设置由后端服务器获取⽤户的主机名或真实 IP 及代理的 IPproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addrproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_body_buffer_size 128k; //⽤于指定客户端请求主体缓冲区⼤⼩,可理解 为先保存到本地在传送给⽤户proxy_connect_timeoute 90 // 表⽰与后端服务器连接超时时间 ,从发起握⼿开 始 , 单位为秒Ningx集群环境搭建反向代理及负载均衡(nginx<—>apache*3)proxy_send_timeout 90; //后端服务器传回数据的超时时间 , 如超过则断开 连接proxy_read_timeoute 90; //nginx 等待后端服务器处理的等候超时时间proxy_buffer_size 4k; //* 设置缓冲区⼤⼩ ( 等于 proxy_buffers 设置的⼤ ⼩)proxy_buffers 4 32k; // 设置缓冲区的数量及⼤⼩proxy_buffersx2 proxy_busy_buffers_size 64k; //设置系统繁忙时可以使⽤的proxy_buffers ⼤ ⼩proxy_temp_file_write_size 64k; // 指定 proxy 缓存临时⽂件的⼤⼩Ningx集群环境搭建Nginx+keepalived搭建⾼可⽤集群原理:Keepalived 是⼀种⾼性能的服务器⾼可⽤或热备解决⽅案,Keepalived 可以⽤来防⽌服务器单点故障的发⽣,通过配合 Nginx 可以实现 web 前端服务的⾼可⽤利⽤Keepalived 的 VRRP(Virtual Router Redundancy Protocol) 协议,来实现⾼可⽤性(HA)。Ningx集群环境搭建Nginx+keepalived搭建⾼可⽤集群⽰意图Ningx集群环境搭建Nginx+keepalived搭建⾼可⽤集群准备环境两台虚拟机如:192.168.0.121和192.168.0.122安装nginx所需要的运⾏库yum install gcc gcc -c++ zlib zlib-devel pcre pcre-devel opensslopenssl-develNingx集群环境搭建Nginx+keepalived搭建⾼可⽤集群gcc :gcc编译器gcc -c++ :c++编译器⽤于编译nginx中的http模块pcre, pcre-devel: pcre库,nginx中rewrite模块需要openssl,openssl-devel:⽤于⽀持在ssl协议上传输HTTPNingx集群环境搭建Nginx+keepalived搭建⾼可⽤集群安装#wget http://nginx.org/download/nginx-1.9.5.tar.gz#获取nginx源码包#tar -zxvf nginx-1.9.5.tar.gz //解压#cd /nginx-1.9.5 //进⼊源码⽬录#./configure 编译#make && make install //编译并安装#systemctl start nginx.service //启动服务Ningx集群环境搭建Nginx+keepalived搭建⾼可⽤集群安装keepalived:wget http://www.keepalived.org/software/keepalived-1.2.22.tar.gz //下载到本地#mkdir -p /alidata/server/keepalived //创建⽬录#tar -zxvf keepalived-1.2.22.tar.gz //解压缩#cd keepalived-1.2.22#./configure //编译#make && make install //安装#systemctl start keepalived.service //启动服务Ningx集群环境搭建Nginx+keepalived搭建⾼可⽤集群修改配置⽂件:#vim /etc/keepalived/keepalived.conf从第8⾏开始vrrp_script chk_nginx {script "/alidata/server/keepalived/nginx_check.sh" #运⾏脚本,脚本内容下⾯有,就是起到⼀个nginx宕机以后,⾃动开启服务interval 2 //检测时间间隔weight -20 //如果条件成⽴的话,则权重 -20}Ningx集群环境搭建Nginx+keepalived搭建⾼可⽤集群vrrp_instance VI_1 {state MASTER //来决定主从,从机器为BACKUPinterface eno16777736 //绑定虚拟 IP 的⽹络接⼜,根据⾃⼰的机器填写virtual_router_id 121 //虚拟路由的 ID 号, 两个节点设置必须⼀样mcast_src_ip 192.168.43.121 #填写为本机ippriority 100 //节点优先级,主要⽐从节点优先级⾼nopreempt //优先级⾼的设置 nopreempt 解决异常恢复后再次抢占的问题advert_int 1 // 组播信息发送间隔,两个节点设置必须⼀样,默认 1sauthentication {auth_type PASSauth_pass 1111}Ningx集群环境搭建Nginx+keepalived搭建⾼可⽤集群track_script {chk_nginx //执⾏ Nginx 监控的服务}virtual_ipaddress {192.168.43.10 // 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,⽤途⼴泛。可配置多个。}}从机与主机配置⽂件相同,⽹络地址以及权重必须更改Ningx集群环境搭建Nginx+keepalived搭建⾼可⽤集群监控脚本内容#!/bin/bashA=`ps -C nginx –no-header |wc -l`if [ $A -eq 0 ];then/alidata/server/nginx/sbin/nginxsleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfifi保存并重启服务Ningx集群环境搭建Nginx+keepalived搭建⾼可⽤集群打开浏览器输⼊虚拟IP地址:Ningx集群环境搭建Nginx+keepalived搭建⾼可⽤集群此时,我停掉其中⼀台的keepalived服务Ningx集群环境搭建Nginx+keepalived搭建⾼可⽤集群

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索集群 , 环境 , 搭建 Ningx ,以便于您获取更多的相关知识。