ansible实现nginx双主模式反代,keepalived高可用,memcached缓存

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

  ansible自动化运维工具配置ngnix前端反代到后端真实机,并设置keepalived高可用,在后端一台真实主机上配置httpd,mysql,php-fpm;设置memcached缓存服务器在这台真实主机上;(因为本人电脑配置问题,无法开启那么多虚拟机,所以就简单构建了一下) 

  IP配置:

   Directory1(MASTER):

     eno16777736:172.16.72.5

     eno16777736:0:172.16.72.1(虚拟VIP)

     eno33554976:192.168.72.1

     eno33554976:0:192.168.72.5(虚拟DIP)

   Directory2(BACKUP):

     eno16777736:172.16.72.4

     eno33554976:192.168.72.2

   RS1:

     eno16777736:192.168.72.3

   

   ①安装ansible

   b8ee57df44ba6098cbf12a4376b8ef3e.jpg-wh_

   联网安装即可

   ②配置ansible的hosts inventory

   对配置文件/etc/ansible/hosts

   5b535a7a0bca616b5fba6e9a30c72380.jpg-wh_

   nginxproxy是作为反代服务器高可用的两台主机的真实IP,后端的参数是作为变量存在的,后面会  讲到;

   rs是作为后端真实主机的IP声明,这样ansible才能针对不同的主机做出不同的配置操作;

   ③设置角色roles:

   角色roles需要在/etc/ansible/roles下创建对应的角色目录,如

   da4c3819dfa53bd45b940ccc68b5cf73.jpg-wh_

   创建的角色需要在每个目录下对应创建该角色的tasks(任务),handlers,templates等需要使用的  目录;

   如

   873a07e6ade0a0e7a1476f97b222bc5c.jpg-wh_

   像tasks,handlers,vars这样的目录下都需要有一个主配置文件main.yml,用于设置任务,定义  配置文件被修改后的处理操作和定义变量;templates目录则是用于存放被template模块传送的文件,  需以j2结尾的文件;files目录则是用于存放copy模块复制的文件;

   ④nginx角色创建:

   79ec79adbc5e499366862714a02ecb29.jpg-wh_

   第一项任务:传送nginx相关yum源;(再次并没有直接安装nginx,因为网络并没有连接,使用之    前安装denginx进行操作)

   第二项任务:传送配置好的nginx.conf文件,该文件存放于/etc/ansible/roles/nginx/templates    下;

   配置好的nginx.conf:

   0fa7436a1dcd5d74843767d4c6833d4c.jpg-wh_

   第三项任务:配置nginx反代服务器的ip_forward核心参数;可以直接传送配置文件永久保存;

   ⑤keepalived角色创建:

   0d91ca4a5c38c19147b03d6cda8995f4.jpg-wh_

   第一项任务:安装keepalived,使用yum模块安装;

   第二项任务:传送事先配置好的keepalived配置文件;当配置文件被修改后,通过notify转到      handlers目录下的main.yml执行重启服务操作;对配置文件中设置变量参数如:

   e643c68598cc9788dadeed6ff5a718fc.jpg-wh_

   变量的value在hosts inventory处获取,也可以直接在该角色的vars目录下创建main.yml中写入;

   5b535a7a0bca616b5fba6e9a30c72380.jpg-wh_

   handlers中的配置:

   c56bdf578fd7782ff3c9277db95f7aab.jpg-wh_

   第三项任务:启动keepalived服务;


   nginx下实现keepalived高可用双主模式:

   e643c68598cc9788dadeed6ff5a718fc.jpg-wh_

   dfc212cffadb6f4b04fcc01372b037f4.jpg-wh_

   ⑥后端真实服务器apache配置

   f1e6484d225c4d0eb443fb94cd061ae0.jpg-wh_

   第一项任务:安装httpd;

   第二项任务:传送配置好的httpd配置文件;若配置文件改动过则通过notify调用handlers重启服    务;

   配置好的httpd.conf:

   b01a6de3c1878195db11a3c655e669b3.jpg-wh_

   handlers中的配置:

   b11a5a8d0320666e52df928fd98925c4.jpg-wh_

   

   第三项任务:对httpd服务进行控制,httpd_status变量默认是启动,可以在命令行中通过-e选项    设置变量;

   vars目录中的配置:

   db6f688fddd79b707e514b615659cca1.jpg-wh_

   ⑦后端真实服务器mysql配置:

   ceca28cf826244037ddda4f7484e3a07.jpg-wh_

   第一项任务:安装mariadb,对于centos7;使用when进行验证,判断主机版本号;

   第二项任务:安装mysqld,对于centos6;使用when进行验证,判断主机版本号;

   第三项任务与第四项任务都是启动相对应的mysql;

   

   vars配置文件设置:

   edd76b7febedd8e7cc5da103e841fd16.jpg-wh_

   ⑧后端真实服务器php配置:

   2d2b53e715f0480b7fb769ce8471d605.jpg-wh_

   第一项任务:安装php-fpm;

   第二项任务:对php-fpm服务的操作;

   vars目录中的配置:

   9338757974ee4029b0d7b7236585aa1e.jpg-wh_

   ⑨后端真实服务器memcached配置:

   d4acd8fa157667f6990d07f1a402a6f6.jpg-wh_

   第一项任务:安装memcached;

   第二项任务:安装memcached关于php缓存所需要的软件php-prcl-memcache;

   第三项任务:传送安装memcached后需要进行php缓存的php配置文件;(针对于php-fpm)配置文件若    修改过则通过notify转到handlers;

   e07f9cf4f9ee419c9b8abad7a6e23e45.jpg-wh_

   

   handlers:

   7e71f22d7fe47345008720d3ad30758d.jpg-wh_

  

   vars:

   99134ee68672a8cbfbd0df2c915bb22e.jpg-wh_

   

   ⑩将phpmyadmin软件包传送过去

   9fc29d5ce3a715310e3b4366955d24f2.jpg-wh_

   放入files目录下;

   然后在真实服务器处进行解压;

   

   最后执行

   #ansible rs -m shell -a "route add default gw 192.168.72.5"

   让后端服务器的输出转到虚拟的DIP上;

   

   输出结果:

     ed4442ed52bb27f314fecc44adffb5a9.jpg-wh_

   


本文转自 wujunqi1996 51CTO博客,原文链接:http://blog.51cto.com/12480612/1979790


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
缓存 应用服务中间件 nginx
成功解决 Nginx更新静态资源无效 ,Nginx静态资源更新不及时,Nginx清除缓存
这篇文章讨论了在使用Nginx进行动静分离时遇到的静态资源更新不及时的问题。问题描述了在服务器上更新静态资源后,访问页面时页面没有显示更新的情况。文章提供了解决这个问题的方法,即清除浏览器缓存,并提供了相关参考文章链接。此外,还展示了问题复现的步骤和正常情况的预期结果。
成功解决 Nginx更新静态资源无效 ,Nginx静态资源更新不及时,Nginx清除缓存
|
4月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
125 0
|
2月前
|
存储 缓存 监控
|
2月前
|
存储 缓存 负载均衡
Nginx代理缓存机制
【10月更文挑战第2天】
84 4
|
2月前
|
存储 缓存 NoSQL
Nginx缓存
Nginx缓存
30 2
|
4月前
|
运维 负载均衡 监控
Nginx加Keepalived实现高可用
使用Nginx和Keepalived来实现高可用性的方案,对于确保关键服务的稳定性和可靠性来说是非常有效的。此配置涉及多个步骤,包括各个服务的安装、设置及测试,目标是在主服务器故障时能无缝切换,以确保服务的持续可用。正确的配置和充分的测试是实现高可用性的保证,这也要求管理员对这些工具和它们背后的原理有深入的了解。
74 1
|
4月前
|
缓存 应用服务中间件 nginx
[nginx]proxy_cache缓存系统
[nginx]proxy_cache缓存系统
|
4月前
|
存储 缓存 关系型数据库
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
78 0
|
4月前
|
缓存 关系型数据库 MySQL
【缓存大对决】Memcached VS MySQL查询缓存,谁才是真正的性能之王?
【8月更文挑战第24天】在现代Web应用中,缓存技术对于提升性能与响应速度至关重要。本文对比分析了Memcached与MySQL查询缓存这两种常用方案。Memcached是一款高性能分布式内存对象缓存系统,支持跨服务器共享缓存,具备灵活性与容错性,但受限于内存大小且不支持数据持久化。MySQL查询缓存内置在MySQL服务器中,简化了缓存管理,特别适用于重复查询,但功能较为单一且扩展性有限。两者各有所长,实际应用中可根据需求单独或结合使用,实现最佳性能优化。
127 0
|
2月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
78 6