仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1042|回复: 8
打印 上一主题 下一主题

[CentOS(社区)] 来看看:HTTP集群之nginx+keepalived

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 21:12:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
小知识:Linux发展和成长过程始终依赖着五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。
Nginx不但是一款优异的WEB办事器,同时能够依据nginx的反代办署理能够设置成壮大的负载平衡器.这里就先容怎样把nginx设置成负载平衡器,并分离keepalived设置高可用的集群.

一样平常集群次要架构为:
前端为负载平衡器两个:主/备,两种事情体例,一种是备机待机形态,主机妨碍时备机接受主机事情完成妨碍庄毅,在主机妨碍规复完成时备机持续仅需待机形态,第二种是主备同时事情,一台宕机别的一台主动接受另外一台的事情完成妨碍转移.
第一种体例能够经由过程将域名剖析到一个假造ip(vip)上,主负载平衡器绑定假造ip,当主负载平衡器呈现妨碍时,经由过程keepalived主动将vip绑定到备用负载平衡器上同时arping网关革新MAC地点.,制止单点妨碍.
第二种体例主备同时绑定一个vip,把域名经由过程DNS轮询的体例剖析到这两个办事器上,主机呈现妨碍,备机就将主机绑定vip绑定到备机上,同时arping网关革新MAC地点.完成妨碍转移.
两头为WEB办事器作为realserver,处置哀求.
后端为数据库和散布式文件体系.数据库通常是主从两台.散布式文件体系无效办理WEB办事器之间的数据同步.有的还会将图片办事器独自分别出来放在后端.
本文利用情况:
CentOS5.532位
nginx:nginx-1.0.11
keepalived:keepalived-1.1.19.tar.gz
主调剂器:192.168.3.1
备调剂器:192.168.3.2
realserver:192.168.3.4/5/6
本文彩用第一种体例来举行vip为:192.168.3.253
1、在主备办事器上部署nginx

1.下载
  1. wgethttp://nginx.org/download/nginx-1.0.11.tar.gz
复制代码
2.安装
  1. yum-yinstallzlib-develpcre-developenssl-devel#安装依附tar-zxvfnginx-1.0.11.tar.gzcdnginx-1.0.11./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_flv_module--with-http_gzip_static_modulemake&&makeinstall
复制代码
3.设置
设置主调剂器的nginx,编纂nginx.conf
  1. vi/usr/local/nginx/conf/nginx.confhttp{includemime.types;default_typeapplication/octet-stream;#log_formatmain$remote_addr-$remote_user[$time_local]"$request"#$status$body_bytes_sent"$http_referer"#"$http_user_agent""$http_x_forwarded_for";#access_loglogs/access.logmain;sendfileon;#tcp_nopushon;#keepalive_timeout0;keepalive_timeout65;#gzipon;#增加一组实在的办事器地点池#供proxy_pass和fastcgi_pass指令中利用的代办署理办事器upstreamreal_server_pool{#背景假如有静态使用的时分,ip_hash指令能够经由过程hash算法#将客户端哀求定位到统一台后端办事器上,办理session同享,#但倡议用静态使用做session同享#ip_hash;#server用于指定一个后端办事器的称号和参数#weight代表权,重默许为1,权重越高被分派的客户端越多#max_fails指准时间内对后端哀求失利的次数#fail_timeout到达max_fails指定的失利次数后停息的工夫server192.168.3.4:80weight=1max_fails=2fail_timeout=30s;#down参数用来标志为离线,不介入负载平衡.在ip_hash下利用#在此做演示,前面测试会往失落server192.168.3.5:80weight=1max_fails=2fail_timeout=30sdown;#backup仅仅在非backup办事器宕机或忙碌的时分利用#(在此做演示,前面测试会往失落)server192.168.3.6:80weight=1max_fails=2fail_timeout=30sbackup;}server{listen192.168.3.1:80;server_namelocalhost;#charsetkoi8-r;#access_loglogs/host.access.logmain;location/{#roothtml;#indexindex.htmlindex.htm;#利用upstream设置的一组代办署理办事器#假如后端办事器呈现502或504等实行毛病时,#将主动将哀求转发给负载平衡池中的另外一台办事器.proxy_next_upstreamhttp_502http_504errortimeoutinvalid_header;proxy_passhttp://real_server_pool;proxy_set_headerHost$host;proxy_set_headerX-Forwarded-For$remote_addr;}}}
复制代码
(注重:设置文件中正文ip_hash,觉得ip_hash这个功效将包管这个客户端哀求老是被转发到一台办事器上,以是假如启用了ip_hash指令,将不克不及再利用weight(权重参数),设置文件中到场为注释ip_hash指令)
设置备用nginx,将监听ip改成备用调剂器的ip
  1. http{includemime.types;default_typeapplication/octet-stream;#log_formatmain$remote_addr-$remote_user[$time_local]"$request"#$status$body_bytes_sent"$http_referer"#"$http_user_agent""$http_x_forwarded_for";#access_loglogs/access.logmain;sendfileon;#tcp_nopushon;#keepalive_timeout0;keepalive_timeout65;#gzipon;upstreamreal_server_pool{#ip_hash;server192.168.3.4:80weight=1max_fails=2fail_timeout=30s;server192.168.3.5:80weight=1max_fails=2fail_timeout=30s;server192.168.3.6:80weight=1max_fails=2fail_timeout=30s;}server{listen192.168.3.2:80;#监听ip改成当地ipserver_namelocalhost;#charsetkoi8-r;#access_loglogs/host.access.logmain;location/{#roothtml;#indexindex.htmlindex.htm;proxy_next_upstreamhttp_502http_504errortimeoutinvalid_header;proxy_passhttp://real_server_pool;proxy_set_headerHost$host;proxy_set_headerX-Forwarded-For$remote_addr;}
复制代码
然后启动主备nginx:
  1. /usr/local/nginx/sbin/nginx
复制代码
2、在主备办事器上部署keepalived


安装
安装依附:
  1. yum-yinstallkernel-devel#安装依附
复制代码
开启路由转发:
  1. vi/etc/sysctl.confnet.ipv4.ip_forward=1#此参数改成1sysctl-p#使修正失效
复制代码
起首安装ipvs:
  1. ln-s/usr/src/kernels/2.6.18-194.el5-i686//usr/src/linux#ipvs必要内核文件,做一个软毗连#下载wgethttp://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gztar-zxvfipvsadm-1.24.tar.gzcdipvsadm-1.24makemakeinstall
复制代码
然后安装keepalived
  1. #下载wgethttp://www.keepalived.org/software/keepalived-1.1.19.tar.gztar-zxvfkeepalived-1.1.19.tar.gzcdkeepalived-1.1.19./configure--prefix=/#安装在默许地位(设置文件,二进制文件,启动剧本放到默许地位)--mandir=/usr/local/share/man/--with-kernel-dir=/usr/src/kernels/2.6.18-194.el5-i686/#必要内核的头文件make&&makeinstall
复制代码
设置keepalived


编纂主调剂器设置文件/etc/keepalived/keepalived.conf
  1. global_defs{notification_email{cold_night@linuxzen.com#界说关照邮箱,有多个能够换行增加}notification_email_fromroot@linuxzen.com#界说发送邮件的邮箱smtp_serverwww.linuxzen.com#界说发件办事器smtp_connect_timeout30#界说毗连smtp办事器超不时间router_idLVS_DEVEL}vrrp_instanceVI_1{stateMASTER#标示主备,备机上改成BACKUPinte***ceeth0#HA监测的端口virtual_router_id51#主备的virtual_router_id的值必需不异priority100#优先级,一般次要比备稍年夜advert_int1#VRRPMulticast播送周期秒数authentication{#界说认证auth_typePASS#认证体例auth_pass1111#认证口令字}virtual_ipaddress{#界说vip192.168.3.253#多个可换行增加,一行一个}}virtual_server192.168.3.25380{delay_loop6#每隔6秒查询realserver形态lb_algorrlb_kindNATnat_mask255.255.255.0persistence_timeout50#统一IP的毗连50秒内被分派到统一台realserverprotocolTCP#用TCP监测realserver的形态real_server192.168.3.180{weight3#权重TCP_CHECK{connect_timeout10#10秒无呼应超时nb_get_retry3delay_before_retry3connect_port80}}real_server192.168.3.280{weight3TCP_CHECK{connect_timeout3delay_before_retry3connect_port80}}}
复制代码
设置备用调剂器的keepalived,只必要将stateMASTER改成stateBACKUP,下降priority100的值:
  1. yum-yinstallzlib-develpcre-developenssl-devel#安装依附tar-zxvfnginx-1.0.11.tar.gzcdnginx-1.0.11./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_flv_module--with-http_gzip_static_modulemake&&makeinstall0
复制代码
主备上启动keepalived:
  1. yum-yinstallzlib-develpcre-developenssl-devel#安装依附tar-zxvfnginx-1.0.11.tar.gzcdnginx-1.0.11./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_flv_module--with-http_gzip_static_modulemake&&makeinstall1
复制代码
3、测试—–部署后端办事器
在后端办事器安装nginx,这里仅部署一台然后创立3个基于ip的假造主机供测试:
绑定ip:
  1. yum-yinstallzlib-develpcre-developenssl-devel#安装依附tar-zxvfnginx-1.0.11.tar.gzcdnginx-1.0.11./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_flv_module--with-http_gzip_static_modulemake&&makeinstall2
复制代码
安装nginx后编纂设置文件,在http块里增加:
  1. yum-yinstallzlib-develpcre-developenssl-devel#安装依附tar-zxvfnginx-1.0.11.tar.gzcdnginx-1.0.11./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_flv_module--with-http_gzip_static_modulemake&&makeinstall3
复制代码
创立假造主机根目次,并创立欠亨的首页文档:
  1. yum-yinstallzlib-develpcre-developenssl-devel#安装依附tar-zxvfnginx-1.0.11.tar.gzcdnginx-1.0.11./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_flv_module--with-http_gzip_static_modulemake&&makeinstall4
复制代码
启动nginx:
  1. yum-yinstallzlib-develpcre-developenssl-devel#安装依附tar-zxvfnginx-1.0.11.tar.gzcdnginx-1.0.11./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_flv_module--with-http_gzip_static_modulemake&&makeinstall5
复制代码
翻开扫瞄器会见http://192.168.3.253
革新会看到显现分歧的内容:server1,server2,server3(临盆中的办事器应当是一样的)
如今停失落主调剂器的keepalived
  1. yum-yinstallzlib-develpcre-developenssl-devel#安装依附tar-zxvfnginx-1.0.11.tar.gzcdnginx-1.0.11./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_flv_module--with-http_gzip_static_modulemake&&makeinstall6
复制代码
检察备调剂器的日记:
  1. yum-yinstallzlib-develpcre-developenssl-devel#安装依附tar-zxvfnginx-1.0.11.tar.gzcdnginx-1.0.11./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_flv_module--with-http_gzip_static_modulemake&&makeinstall7
复制代码
如今会见http://192.168.3.253仍然能够会见.
人人也看到了备机keepalived只要检测主机的keepalived中断的时分才会切换vip,而不是检测一台realserver的某一办事(好比检测80端口的HTTP)切换vip,以是在nginx历程中断的时分,假如办事器没有宕机这时候候就没法完成妨碍转移,以是我们编写一个检测nginx形态的剧本分离keepalived完成妨碍转移:
  1. yum-yinstallzlib-develpcre-developenssl-devel#安装依附tar-zxvfnginx-1.0.11.tar.gzcdnginx-1.0.11./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_flv_module--with-http_gzip_static_modulemake&&makeinstall8
复制代码
然后背景运转此剧本:
  1. yum-yinstallzlib-develpcre-developenssl-devel#安装依附tar-zxvfnginx-1.0.11.tar.gzcdnginx-1.0.11./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_flv_module--with-http_gzip_static_modulemake&&makeinstall9
复制代码
如许就完成了聚集的高牢靠和高可用.

小知识:CentOS完全免费,不存在REDHATAS4需要序列号的问题。
不帅 该用户已被删除
沙发
发表于 2015-1-17 07:23:14 | 只看该作者
Linux只是个内核!这点很重要,你必须理解这一点。只有一个内核是不能构成一个操作系统的。
因胸联盟 该用户已被删除
板凳
发表于 2015-1-21 07:47:52 | 只看该作者
安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果Linux说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-6 11:51:27 | 只看该作者
熟悉操作是日常学习Linux中的三大法宝。以下是作者学习Linux的一些个人经验,供参考:
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-16 04:30:13 | 只看该作者
另外Linux上也有很多的应用软件,安装运行了这些软件后,你就可以在Linux上编辑文档、图?片,玩游戏、上网、播放多媒体文件等。
蒙在股里 该用户已被删除
6#
发表于 2015-3-4 23:57:23 | 只看该作者
了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。
只想知道 该用户已被删除
7#
发表于 2015-3-11 21:56:02 | 只看该作者
清楚了解网络的基础知识,特别是在Linux下应用知识,如接入internet等等。
精灵巫婆 该用户已被删除
8#
发表于 2015-3-19 16:14:27 | 只看该作者
任何一个叫做操作系统的东西都是这样子构成的:内核+用户界面+一般应用程序。
谁可相欹 该用户已被删除
9#
发表于 2015-3-29 16:18:58 | 只看该作者
再次,Linux是用C语言编写的,我们有学习C语言的基础,读程序和编写代码方面存在的困难小一点,也是我们能较快掌握的原因之一。?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-7 01:32

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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