双机高可用、负载均衡、MySQL(读写分离、主从自动切换)架构设计概要1.docxVIP

双机高可用、负载均衡、MySQL(读写分离、主从自动切换)架构设计概要1.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
双机高可用、负载均衡、MySQL(读写分离、主从自动切换)架构设计概要1

双机高可用、负载均衡、MySQL(读写分离、主从自动切换)架构设计原文出处:?朱茂海???架构简介前几天网友来信说帮忙实现这样一个架构:只有两台机器,需要实现其中一台死机之后另一台能接管这台机器的服务,并且在两台机器正常服务时,两台机器都能用上。于是设计了如下的架构。此架构主要是由keepalived实现双机高可用,维护了一个外网VIP,一个内网VIP。正常情况时,外网VIP和内网VIP都绑定在server1服务器,web请求发送到server1的nginx,nginx对于静态资源请求就直接在本机检索并返回,对于php的动态请求,则负载均衡到server1和server2。对于SQL请求,会将此类请求发送到Atlas MySQL中间件,Atlas接收到请求之后,把涉及写操作的请求发送到内网VIP,读请求操作发送到mysql从,这样就实现了读写分离。当主服务器server1宕机时,keepalived检测到后,立即把外网VIP和内网VIP绑定到server2,并把server2的mysql切换成主库。此时由于外网VIP已经转移到了server2,web请求将发送给server2的nginx。nginx检测到server1宕机,不再把请求转发到server1的php-fpm。之后的sql请求照常发送给本地的atlas,atlas把写操作发送给内网VIP,读操作发送给mysql从,由于内网VIP已经绑定到server2了,server2的mysql同时接受写操作和读操作。当主服务器server1恢复后,server1的mysql自动设置为从,与server2的mysql主同步。keepalived不抢占server2的VIP,继续正常服务。架构要求?要实现此架构,需要三个条件:1、服务器可以设置内网IP,并且设置的内网IP互通;2、服务器可以随意绑定IDC分配给我们使用的外网IP,即外网IP没有绑定MAC地址;3、MySQL服务器支持GTID,即MySQL-5.6.5以上版本。环境说明server1eth0: 10(对外IP)eth1: 00(对内IP)server2eth0: 14(对外IP)eth1: 01(对内IP)系统都是CentOS-6。对外VIP:?39对内VIP:?50hosts设置/etc/hosts:00 server101 server2Nginx PHP MySQL Memcached安装这几个软件的安装推荐使用EZHTTP来完成。解决session共享问题php默认的session存储是在/tmp目录下,现在我们是用两台服务器作php请求的负载,这样会造成session分布在两台服务器的/tmp目录下,导致依赖于session的功能不正常。我们可以使用memcached来解决此问题。上一步我们已经安装好了memcached,现在只需要配置php.ini来使用memcached,配置如下,打开php.ini配置文件,修改为如下两行的值:12session.save_handler = memcachesession.save_path = tcp://00:11211,tcp://01:11211之后重启php-fpm生效。Nginx配置Server1配置1234567891011121314151617181920http {[...]????upstream php-server {?????????? server 01:9000;?????????? server :9000;?????????? keepalive 100;????}[...] server {????[...]????????location ~ \.php$ {????????????????????????fastcgi_pass?? php-server;????????????????????????fastcgi_index??index.php;????????????????????????fastcgi_param??SCRIPT_FILENAME??$document_root$fastcgi_script_name;????????????????????????include????????fastcgi_params;????????}????[...] }[...]}Server2配置1234567891011121314151617181920http {[...]????upstream php-server {?????????? server 00:9000;?????????? server :9000;?????????? keepalive 100;????}[...] server {???

文档评论(0)

yaocen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档