设为首页 收藏本站
查看: 1423|回复: 0

[经验分享] HA-Proxy+Nginx实现web负载均衡(nginx篇)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-5-21 09:04:46 | 显示全部楼层 |阅读模式
本文分两篇,一篇nginx配置,一篇haproxy配置,此文为nginx的配置

实验环境:                        

HAProxy  IP:10.2.18.219 Centos6.4-64bitWeb1 IP:10.2.16.254 Centos6.4-64bit           Web2 IP:10.2.16.253 Centos6.4-64bitvlan互通,两台web事先做好nginx,两台web配置一模一样有关nginx介绍不再多说,下面直接讲安装配置

本例用nginx-1.6.0版本

首先安装依赖
yum -y install pcre*     (本机所需依赖仅为pcre,可根据编译提示自行选择安装依赖)

解压安装nginx:
tar -zxvf nginx-1.6.0.tar.gz  -C ./

mkdir  /usr/local/nginx      #创建nginx根目录

cd nginx-1.6.0

./configure   --prefix=/usr/local/nginx
make  && make install

安装完成后,修改配置文件

Nginx配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)。main部分设置的指令将影响其他所有设置;server部分的指令主要用于指定主机和端口;upstream指令主要用于负载均衡,设置一系列的后端服务器;location部分用于匹配网页位置。这四者之间的关系式:server继承main,location继承server,upstream既不会继承其他设置也不会被继承。

vim  nginx.conf     #以下为本例中的nginx配置,比较简单:

user  nobody;       #指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。      
worker_processes  5;   #指定了Nginx要开启的进程数。每个Nginx进程平均耗费10M~12M内存。根据经验,一般指定一个进程足够了,如果是多核CPU,建议指定和CPU的数量一样的进程数即可。
error_log  logs/error.log  notice;   #用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
pid        logs/nginx.pid;   #指定pid文件位置

events {                      #events指令是设定Nginx的工作模式及连接数上限。
    use epoll;                #指定Nginx的工作模式为epoll。 Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。对于Linux系统,epoll工作模式是首选。
    worker_connections  1024;   #用于定义Nginx每个进程的最大连接数,默认为1024
}
       #最大客户端连接数由上面定义的worker_processes和此worker_connections决定,即最大连接数=worker_processes*worker_connections,在作为反向代理时,最大连接数 = worker_processes * worker_connections/4
进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效。
http {                                         #HTTP服务器设置
    include       mime.types;
    default_type  application/octet-stream;    #日志格式的设定
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;         #指定访问日志的路径
    sendfile        on;                        #开启高效文件传输模式
    keepalive_timeout  60;   #客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接。
    gzip  on;                                  #开启GZIP压缩,实时压缩输出数据流
    gzip_min_length  1100;         #允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,不管页面多大都进行压缩。建议设置成大于1K的字节数,小于1K可能会越压越大。   
    gzip_buffers     4 8k;         #申请4个单位为8K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
    gzip_types             text/plain;   #指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的。
    output_buffers   1 32k;        
    postpone_output  1460;


    server {                                  #虚拟主机配置
        listen       80;                      #指定虚拟主机的服务端口
        server_name  10.2.16.254  www.czy.com; #指定IP地址或者域名,多个域名之间用空格分开
        charset utf8;                          #指定网页默认编码格式
        access_log  logs/czy.access.log  main;  #指定虚拟主机的日志文件

        location / {                            #URL匹配配置(URL地址匹配是进行Nginx配置中最灵活的部分,location支持正则表达式匹配,也支持条件判断匹配,用户可以通过location指令实现Nginx对动、静态网页进行过滤处理。
            root   html;                        #指定网页文件存放文件夹
            index  index.html index.htm;        #首页文件
        }

        error_page   500 502 503 504  /50x.html;  #设置了虚拟主机的错误信息返回页面
        location = /50x.html {                    #error_page指令可以定制各种错误信息的返回页面。特别需要注意的是,这些错误信息的返回页面大小一定要超过512K
            root   html;                        #指定网页文件存放文件夹   
        }
       }
}

:wq
保存退出,nginx配置文件至此完成!

启动nginx:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

启动成功后,同样的操作在另一台web2服务器上,两台nginx都配置完成后,再配置HA-proxy。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-19359-1-1.html 上篇帖子: Web服务之Nginx浅析 下篇帖子: nginx+tomcat实现负载均衡,session同步
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表