搭建Lnmp架构
Part 1:单线程、事件驱动、异步非阻塞的Nginx
Nginx(发音"engine x")是俄罗斯软件工程师Igor Sysoev开发的免费开源web服务器软件。nginx于2004年发布,聚焦于高性能,高并发和低内存消耗问题。并且具有多种web服务器功能特性:负载均衡,缓存,访问控制,带宽控制,以及高效整合各种应用的能力,这些特性使nginx很适合于现代网站架构。目前,nginx已经是互联网上第二流行的开源web服务器软件。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:京东、新浪、网易、腾讯、淘宝等。
1.Nginx源码编译
实验主机:172.25.44.22
yum install -y gcc gcc-c++ pcre-devel tar zxf nginx-1.9.14.tar.gz cd nginx-1.9.14/ vim auto/cc/gcc #CFLAGS=”$CFLAGS -g” ##将这行注释掉,去掉debug编译模式) vim src/core/nginx.h #define NGINX_VER "nginx" ##安全起见,将NGINX_VERSION删掉,这样编译后外界无法获取程序的版本号 vim ~/.bash_profile ##修改环境变量 PATH=$PATH:$HOME/bin:/usr/local/lnmp/nginx/sbin export PATH source ~/.bash_profile ##生效 ./configure --prefix=/usr/local/lnmp/nginx --with-http_stub_status_module --with-http_ssl_module ##对即将安装的Nginx进行配置,检验当前的环境是否满足Nginx的依赖关系 make && make install ##编译并安装 cd /usr/local/lnmp/nginx/sbin/ [root@server2 sbin]# curl -I localhost HTTP/1.1 200 OK Server: nginx/ Date: Thu, 28 Jul 2016 08:31:36 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Thu, 28 Jul 2016 08:27:14 GMT Connection: keep-alive ETag: "5799c1e2-264" Accept-Ranges: bytes useradd -s /sbin/nologin nginx ##新建用户Nginx,非交互式 usermod -d /usr/local/lnmp/nginx/ nginx ##指定用户加目录 vim /usr/local/lnmp/nginx/conf/nginx.conf user nginx; 用户nginx worker_processes 2; ##运行进程为2 events { use epoll; ##采用高效的事件模型机制 worker_connections 2048; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } location /status { stub_status on; ##显示运行状态 access_log off; } server { listen 443 ssl; server_name server2.example.com; ##主机名 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; } } server { listen 80; server_name www.linux.org; location / { root /web1; index index.html index.htm; } } server { listen 80; server_name www.unix.org; location / { root /web2; index index.html index.htm; } } cp /etc/pki/tls/certs/cert.pem /usr/local/lnmp/nginx/conf/ mkdir /web{1,2} ##创建web1,web2 cd /web1/ echo www.linux.org > index.html ##给web1写入测试页 cd /web2/ echo www.unix.org > index.html ##给web2写入测试页 nginx -t ##检验语法 nginx ##运行Nginx netstat -antple ##查看443端口是否开启
如图:
检测能否正常访问www.linux.org,www.unix.org
如图:
在物理机上:
vim /etc/hosts 172.25.44.22 server2.example.com www.linux.org www.unix.org ##加入地址解析
登陆http://172.25.44.22,如图:
登陆http://172.25.44.22/status,如图:
登陆http://www.linux.org/,如图:
登陆http://www.unix.org/,如图:
2.通过配置upstream来搭建web服务器集群,实现Nginx的负载均衡
实验主机:172.25.44.22
172.25.44.33
172.25.44.44
在主节点(172.25.44.22)上:
vim /usr/local/lnmp/nginx/conf/nginx.conf http { upstream westos { server 172.25.44.33:80; server 172.25.44.44:80; } include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name www.linux.org; location / { proxy_pass http://westos; ##更改优先级,出故障先访问http://westos } } server { listen 80; server_name www.unix.org; location / { root /web2; index index.html index.htm; } } } 在从节点(172.25.44.33,172.25.44.44)上: yum install -y httpd ##安装apache /etc/init.d/httpd start ##启动apache vim /var/www/html/index.html ##分别写入测试页 server3(4).example.com 在主节点上: nginx -t ##检验语法 nginx -s reload ##重新加载Nginx 登陆http://www.linux.org/,如图:
当server3上被停掉后,登陆http://www.linux.org/,如图:
从而实现负载均衡。