仓酷云

标题: 带来一篇CentOS6.4下DNS+squid+nginx+mysql搭建高可用web办事器 [打印本页]

作者: 小魔女    时间: 2015-1-14 20:33
标题: 带来一篇CentOS6.4下DNS+squid+nginx+mysql搭建高可用web办事器
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!一.Squid是甚么
Squid是一种用来缓冲Internet数据的软件。它是如许完成其功效的,承受来自人们必要下载的方针(object)的哀求并得当地处置这些哀求。也就是说,假如一团体想下载一web页面,他哀求Squid为他获得这个页面。Squid随之毗连到近程办事器并向这个页面收回哀求。然后,Squid显式地会萃数据到客户端呆板,并且同时复制一份。当下一次有人必要统一页面时,Squid能够复杂地从磁盘中读到它,那样数据迅即就会传输到客户机上。以后的Squid能够处置HTTP,FTP,GOPHER,SSL和WAIS等协定。但它不克不及处置如POP,NNTP,RealAudio和别的范例的器材。
squid各类代办署理的界说
正向代办署理
a.尺度的代办署理缓冲办事器
  一个尺度的代办署理缓冲办事被用于缓存静态的网页(比方:html文件和图片文件等)到当地收集上的一台主机上(即代办署理办事器)。当被缓存的页面被第二次会见的时分,扫瞄器将间接从当地代办署理办事器那边猎取哀求数据而不再向原web站点哀求数据。如许就节俭了可贵的收集带宽,并且进步了会见速率。可是,要想完成这类体例,必需在每个外部主机的扫瞄器上明白指明朝理办事器的IP地点和端标语。客户端上彀时,每次都把哀求送给代办署理办事器处置,代办署理办事器依据哀求断定是不是毗连到近程web办事器猎取数据。假如在当地缓冲区有方针文件,则间接将文件传给用户便可。假如没有的话则先取回文件,先在当地保留一份缓冲,然后将文件发给客户端扫瞄器。
b.通明代办署理缓冲办事器(经常使用在局域网网打开装置,共同防火墙reject利用)
  通明代办署理缓冲办事和尺度代办署理办事器的功效完整不异。可是,代办署理操纵对客户真个扫瞄器是通明的(即不需指明朝理办事器的IP和端口)。通明代办署理办事器阻断收集通讯,而且过滤出会见内部的HTTP(80端口)流量。假如客户真个哀求在当地有缓冲则将缓冲的数据间接发给用户,假如在当地没有缓冲则向近程web办事器收回哀求,其他操纵和尺度的代办署理办事器完整不异。关于Linux操纵体系来讲,通明代办署理利用Iptables大概Ipchains完成。由于不必要对扫瞄器作任何设置,以是,通明代办署理关于ISP(Internet办事器供应商)出格有效。
反向代办署理
a.反向代办署理缓冲办事器
  反向代办署理是和前两种代办署理完整分歧的一种代办署理办事。利用它能够下降原始WEB办事器的负载。反向代办署理办事器承当了对原始WEB办事器的静态页面的哀求,避免原始办事器过载。它位于当地WEB办事器和Internet之间,处置一切对WEB办事器的哀求,构造了WEB办事器和Internet的间接通讯。假如互联网用户哀求的页面在代办署理办事器上有缓冲的话,代办署理办事器间接将缓冲内容发送给用户。假如没有缓冲则先向WEB办事器收回哀求,取回数据,当地缓存后再发送给用户。这类体例经由过程下降了向WEB办事器的哀求数从而下降了WEB办事器的负载。
二.体系架构
1.道理申明
经由过程DNS的轮询手艺,未来自客户真个哀求分发给个中一台Squid反向代办署理办事器处置,假如这台Squid缓存了用户的哀求资本,则将哀求的资本间接前往给用户,不然Squid将此次哀求依据设置的划定规矩发送给邻人Squid和背景的WEB办事器处置,如许既加重背景WEB办事器的负载,又进步全部网站的功能和宁静性。

带来一篇CentOS6.4下DNS+squid+nginx+mysql搭建高可用web办事器
登录/注册后可看大图


2.主机分派:
DNS办事器:启用两张网卡,毗连两个网段
eth0:10.10.54.150
eth1:172.16.54.254(作为172.16.54.0/24网段的网关)
两台squid反向代办署理办事器
squid1:172.16.54.150
squid2:172.16.54.151
两台web办事器(装置Discuz_X3.0_SC_UTF8.zip)
web1:172.16.54.200
web2:172.16.54.201
三台mysql办事器(一主两从)
master:172.16.54.203
slave1:172.16.54.204
slave2:172.16.54.205
三:起首举行内存优化
编纂sysctl.conf文件,增加以下内容
shell>vi/etc/sysctl.conf
net.ipv4.tcp_rmem=4096873804194304
net.ipv4.tcp_wmem=4096655364194304
net.core.wmem_default=8388608
net.core.rmem_default=8388608
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.core.netdev_max_backlog=262144
net.core.somaxconn=262144
net.ipv4.tcp_max_orphans=3276800
net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.tcp_max_tw_buckets=5000
net.ipv4.tcp_timestamps=0
net.ipv4.tcp_synack_retries=1
net.ipv4.tcp_syn_retries=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_mem=78643210485761572864
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=1200
net.ipv4.ip_local_port_range=102465000
#设置选项注释:
net.ipv4.tcp_rmem=4096873804194304:TCP读buffer,可参考的优化值:32768436600873200
net.ipv4.tcp_wmem=4096655364194304:TCP写buffer,可参考的优化值:8192436600873200
net.core.wmem_default:暗示发送套接字缓冲区巨细的缺省值(以字节为单元)
net.core.rmem_default:暗示吸收套接字缓冲区巨细的缺省值(以字节为单元)
net.core.rmem_max:暗示吸收套接字缓冲区巨细的最年夜值(以字节为单元)
net.core.wmem_max:暗示发送套接字缓冲区巨细的最年夜值(以字节为单元)
net.core.netdev_max_backlog=262144:每一个收集接口吸收数据包的速度比内核处置这些包的速度快时,同意送到行列的数据包的最年夜数量。
net.core.somaxconn=262144:web使用中listen函数的backlog默许会给我们内核参数的net.core.somaxconn限定到128,而nginx界说的NGX_LISTEN_BACKLOG默许为511,以是有需要调剂这个值。
net.ipv4.tcp_max_orphans=3276800:体系中最多有几个TCP套接字不被联系关系就任何一个用户文件句柄上。
net.ipv4.tcp_max_syn_backlog=8192:暗示SYN行列的长度,默许为1024,加年夜行列长度为8192,能够包容更多守候毗连的收集毗连数。
net.ipv4.tcp_max_tw_buckets=5000:暗示体系同时坚持TIME_WAIT套接字的最年夜数目,假如凌驾这个数字,TIME_WAIT套接字将立即被扫除并打印告诫信息。削减它的最年夜数目,制止Squid办事器被大批的TIME_WAIT套接字拖逝世。
net.ipv4.tcp_timestamps=0:工夫戳能够制止序列号的卷绕。一个1Gbps的链路一定会碰到之前用过的序列号,工夫戳可以让内核承受这类“非常”的数据包,这里必要将其关失落。
net.ipv4.tcp_tw_recycle=1:暗示开启TCP毗连中TIME-WAITsockets的疾速接纳。
net.ipv4.tcp_tw_reuse=1:暗示开启重用,同意将TIME-WAITsockets从头用于新的TCP毗连。
net.ipv4.tcp_mem=78643210485761572864:一样有3个值,net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力;net.ipv4.tcp_mem[1]:在此值下,进进内存压力阶段;net.ipv4.tcp_mem[2]:高于此值,TCP回绝分派socket。可依据物理内存巨细举行调剂,假如内存充足年夜的话,可得当往上调。倡议94500000915000000927000000。
net.ipv4.tcp_fin_timeout=30:暗示假如套接字由本端请求封闭,这个参数决意了它坚持在FIN-WAIT-2形态的工夫。
net.ipv4.tcp_keepalive_time=1200:暗示当keepalive升引的时分,TCP发送keepalive动静的频度。缺省是2小时,改成20分钟。
net.ipv4.ip_local_port_range=102465000:暗示用于向外毗连的端口局限。缺省情形下很小:32768到61000,改成1024到65000。
#使设置当即失效:
/sbin/sysctl-p



四.设置DNS办事器,完成轮询
shell>yuminstallbindbind-utils
shell>vim/etc/named.conf
#装置DNS办事器,并设置named.conf
shell>vim/etc/named.conf
options{
listen-onport53{any;};
allow-query{any;};
recursionyes;
#rrset-order标明对bbs.centos.com域中的IN纪录利用轮询
rrset-order{
classINtypeAname"bbs.centos.com"ordercyclic;
};
};
zone"."IN{
typehint;
file"named.ca";
};
zone"centos.com"IN{
typemaster;
file"named.lij.com";
};
zone"54.16.172.in-addr.arpa"IN{
typemaster;
file"named.172.16.54";
};
#设置正解域
shell>vim/var/named/named.centos.com
$TTL600
@INSOAcentos.com.ftp.(
2011080404
3H
15M
1W
1D)
@INNSceontos.com.
centos.com.INA10.10.54.150
@INMX10mail.ceontos.com.
mail.centos.com.INA10.10.54.151
bbs.centos.com.INA172.16.54.150
bbs.centos.com.INA172.16.54.151
#重启
shell>/etc/init.d/namedrestart
#测试DNS轮询是不是失效,经由过程两次ping
shell>pingbbs.centos.com
PINGbbs.centos.com(172.16.54.151)56(84)bytesofdata.
64bytesfrom172.16.54.151:icmp_seq=1ttl=64time=0.441ms
#再次ping
shell>pingbbs.centos.com
PINGbbs.centos.com(172.16.54.150)56(84)bytesofdata.
64bytesfrom172.16.54.150:icmp_seq=1ttl=64time=0.019ms
#下面能够看到两次ping的IP其实不不异
注重:测试机的DNS办事器必要设置为10.10.54.150这台



五.设置两台squid办事器
1.编译装置squid
shell>yuminstallgccwgetperlgcc-c++make
shell>cd/tmp
shell>wgethttp://www.squid-cache.org/Versions/v3/3.1/squid-3.1.19.tar.gz
shell>tarxzfsquid-3.1.19.tar.gz
shell>cdsquid-3.1.19
shell>./configure--prefix=/usr/local/squid--enable-gnuregex--disable-carp--enable-async-io=240--with-pthreads--enable-storeio=ufs,aufs,diskd--disable-wccp--enable-icmp--enable-kill-parent-hack--enable-cachemgr-hostname=localhost--enable-default-err-language=Simplify_Chinese--with-maxfd=65535--enable-poll--enable-linux-netfilter--enable-large-cache-files--disable-ident-lookups--enable-default-hostsfile=/etc/hosts--with-dl--with-large-files--enable-delay-pools--enable-snmp--disable-internal-dns--enable-underscore-enable-arp-acl
shell>make&&makeinstall
2.创立squid缓存目次,和日记目次
shell>groupaddsquid
shell>useradd-gsquid-s/sbin/nologinsquid
shell>mkdir/squid/data-p
shell>mkdir/squid/log
shell>chown-Rsquid.squid/squid
3.编纂squid设置文件,设置其为反向代办署理形式,负载两台web办事器

shell>vim/usr/local/squid/etc/squid.conf
#用户和用户组
cache_effective_usersquid
cache_effective_groupsquid
#主机名
visible_hostnamesquid1.lij.com
#设置squid为反向代办署理形式
http_port172.16.54.150:80accelvhostvport
#设置squid2为其邻人,当squid1在其缓存中没有找到哀求的资本时,经由过程ICP查询往其邻人中获得缓存
icp_port3130
cache_peer172.16.54.151sibling803130
#设置squid1的两个父节点(webserver),originserver参数指明是源办事器,round-robin参数指明squid经由过程轮询体例将哀求分发到个中一台父节点;squid同时会对这些父节点的安康形态举行反省,假如父节点down了,那末squid会从残剩的origin办事器中抓取数据
cache_peer172.16.54.200parent800originserverround-robin
cache_peer172.16.54.201parent800originserverround-robin
#上面是一些会见把持、日记弛缓存目次的设置
cache_mem128MB
maximum_object_size_in_memory4096KB
maximum_object_size10240KB
cache_diraufs/squid/data400016512
coredump_dir/squid/data
#日记路径
cache_access_log/squid/logs/access.log
cache_log/squid/logs/cache.log
cache_store_log/squid/logs/store.log
acllocalnetsrc10.10.54.0/24
http_accessallowall
icp_accessallowlocalnet
refresh_pattern^ftp:144020%10080
refresh_pattern^gopher:14400%1440
refresh_pattern-i(/cgi-bin/|?)00%0
refresh_pattern.020%4320



4.squid2上设置和squid1上设置完整一样,只必要修正相干IP,比方
visible_hostnamesquid2.lij.com
http_port172.16.54.151:80accelvhostvport
icp_port3130
cache_peer172.16.54.150sibling803130
注重:两台squid上都要增加hosts纪录
shell>vim/etc/hosts
172.16.54.200squid1.lij.com
172.16.54.201squid2.lij.com
六.装置三台mysql办事器,并设置为MHA高可用架构
1.MHA先容:MHA是由日本Mysql专家用Perl写的一套Mysql妨碍切换计划以保证数据库的高可用性,它的功效是能在0-30s以内完成主Mysql妨碍转移(failover),即一旦主办事器宕机,备份机即入手下手充任master供应办事,这就包管了我们的web办事器能够延续地运作
2..MHA情况搭建历程参考我的另外一篇文章:http://3974020.blog.51cto.com/3964020/1394246(这篇文章上利用的是四台办事器,一台manager,一台master,两台slave中有一台作为备用master),三台主机也能够完成MHA情况,只必要把个中一台slave主机兼做manager便可
3.最初搭建的MHA布局
主master:172.16.54.203
slave1:172.16.54.204(备用master,主master当失落以后,slave1充任master持续供应办事)
slave2:172.16.54.205(两个脚色,一是作为slave2同步master数据,二是作为manager节点监控主master是不是一般)
七.设置web办事器,并装置服装论坛Discuz
1.web办事器我们选择nginx,起首必要装置LNMP情况,这个略过,上面只给出nginx设置参数,关于nginx功能优化方面的一些参数没有给出
2.shell>vim/usr/local/nginx/conf/nginx.conf
#用户,这个必要跟web根目次的用户不异
userapacheapache;
worker_processes2;
error_loglogs/error.log;
pidlogs/nginx.pid;
events{
worker_connections1024;
}
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.log;
sendfileoff;
keepalive_timeout65;
#gzipon;
server{
listen80;
server_namebbs.centos.com;
#指定web根目次
root/var/www/bbs/upload;
charsetutf-8;
indexindex.phpindex.html;
access_loglogs/bbs.access.log;
#设置php模块撑持
location~.php${
fastcgi_passunix:/var/run/php-fpm.sock;
fastcgi_indexindex.php;
fastcgi_paramSCRIPT_FILENAME$document_root/$fastcgi_script_name;
includefastcgi_params;
includefastcgi.conf;
}
#nginx形态页,次要用于监控
location/server-status{
stub_statuson;
allowall;
access_logoff;
}
}




3.我们设置的web办事器根目次为/var/www/bbs/upload,起首切换到其上一层目次/var/www/bbs
shell>cd/var/www/bbs
shell>unzipDiscuz_X3.0_SC_UTF8.zip
shell>chownapache.apache-R/var/www/bbs
4.扫瞄器会见http://172.16.54.200进进Discuz装置步伐,起首是毛病反省,依据毛病提醒变动毛病,一样平常都是相干目次权限的成绩
5.接上去是要制订Discuz寄存数据库的地位,和数据库读取所用账号,因为之前我们已搭建起了MHA情况,以是这里数据库我们指定为前面的master主机(172.16.54.203),一旦master主机当失落,slave1(172.16.54.204)能够持续供应办事
八.测试
1.在测试机上修正DNS办事器地点为10.10.54.150,然后扫瞄器会见bbs.centos.com测试是不是能够会见,然落后行上面步调
2.测试web办事器:实际上squid办事器会监督后真个web办事器,假如某一台办事器呈现妨碍以后,squid就会把用户哀求代办署理到别的一台办事器,测试中能够当失落一台web办事器
3.测试mysql办事器:mysql的MHA架构能够完成妨碍转移,测试中能够当失落master主机,以检察是不是乐成切换到slave1上,和服装论坛是不是能够会见

参考文章:
http://www.centos.bz/2012/05/squid-reverse-proxy-deploy/
http://rfyiamcool.blog.51cto.com/1030776/915092

本文出自“fightering-cluter”博客,请务必保存此出处http://3974020.blog.51cto.com/3964020/1393353
欢迎大家来到仓酷云论坛!
作者: 再现理想    时间: 2015-1-16 20:21
标题: 带来一篇CentOS6.4下DNS+squid+nginx+mysql搭建高可用web办事器
这也正是有别的OS得以存在的原因,每个系统都有其自身的优点。?
作者: 若天明    时间: 2015-1-16 20:21
标题: 带来一篇CentOS6.4下DNS+squid+nginx+mysql搭建高可用web办事器
在学习的过程中,我们用的是VM虚拟机,开始时真的不真的该怎么去做,特别是我的是命令窗口界面,别人的是图形界面,我都不知道怎么调过来。
作者: 分手快乐    时间: 2015-1-20 09:55
其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。
作者: 因胸联盟    时间: 2015-1-29 06:43
应对Linux的发展历史和特点有所了解,Linux是抢占式多任务多用户操作系统,Linux最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具。
作者: 山那边是海    时间: 2015-2-6 01:04
有疑问前,知识学习前,先用搜索。
作者: 老尸    时间: 2015-2-14 19:32
让我树立了很大的信心学好这门课程,也学到了不少专业知识和技能。?
作者: admin    时间: 2015-3-4 10:27
随着Linux应用的扩展,出现了不少Linux社区。有一些非常优秀的社区往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。
作者: 透明    时间: 2015-3-11 18:25
选择交流平台,如QQ群,网站论坛等。
作者: 仓酷云    时间: 2015-3-19 08:44
Windows?是图形界面的,Linux类似以前的?DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux?也能显示图形界面,也有开始菜单、桌面、图标等。
作者: 冷月葬花魂    时间: 2015-3-27 19:10
尽量不要提问纯属是扯蛋.学习Linux特别是自己一个人初学入手的时候没人教很困难.当然如果可以的话平时多去买些Linux书...对学习Linux很有帮助.




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2