设为首页 双色球直播

双色球简单秘诀: 双色球直播

查看: 365|回复: 1
打印 上一主题 下一主题

[经验分享] Ansible 中小企业高可用负载均衡部署方案

[复制链接]
累计签到:159 天
连续签到:1 天
跳转到指定楼层
1#
发表于 2018-11-30 09:46:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、前言
ansible作为一款灵活、高效、功能丰富的自动化部署工具在企业运维管理中备受推崇。经过测试,我来使用ansible部署小型企业服务框架,实现高可用、负载均衡的目标。如有错误敬请赐教。
目标环境拓扑:



环境介绍:
前端代理层由两台nginx实现,并安装keepalived实现地址滑动达成高可用。 web层由两套Apache+PHP+WordPress 构建应用环境。数据层由一台mariadb组成,篇幅限制这里并没有做数据库主从复制、读写分离(实际环境数据库一定要实现这两项功能)。
IP一览:























二、环境准备:
2.1 管理端安装ansible,配置ssh秘钥使主机间实现基于密钥的认证,测试是否可以互相连接!
ssh-keygen  -t rsa  #三次回车,中途的问题是问秘钥存放位置(默认/root/.ssh),是否加密秘钥。实验方便这里不加密。ssh-copy-id -i .ssh/id_rsa.pub [email protected] #将公钥发送给目标主机ssh-copy-id -i .ssh/id_rsa.pub [email protected]-copy-id -i .ssh/id_rsa.pub [email protected]-copy-id -i .ssh/id_rsa.pub [email protected]-copy-id -i .ssh/id_rsa.pub [url=][email protected][/url]

2.2 编辑ansible的hosts文件,定义所有的主机
vim /etc/ansible/hosts
[web]
192.168.23.61
192.168.23.62
[nginx]
192.168.23.71 state=MASTER priority=100
192.168.23.72 state=BACKUP priotity=90
[mysql]
192.168.23.73

2.3 为所有主机同步时间
ansible all -a 'ntpdate cn.pool.ntp.org'

2.4 创建ansible相关角色的目录
mkdir -pv /etc/ansible/roles/{mysql,web,nginx}/{files,tasks,templates,vars,handlers,meta}

三、配置web的playbook:
3.1 创建tasks文件
vim /etc/ansible/roles/web/tasks/main.yml- name: install web pakgs  yum: name={{ item }}  with_items:  - httpd  - php  - php-mysql- name: config  web  copy: src=httpd.conf dest=/etc/httpd/conf/httpd.conf  notify: restart the service # 注意这里要与handlers里定义的name相同- name: copy wordpress  synchronize: src=wordpress dest=/var/www/html/wordpress/- name: restart the service  service: name=httpd state=started

3.2 创建handles
vim /etc/ansible/roles/web/handlers/main.yml- name: restart the service  #就这  service: name=httpd state=restarted

3.3 添加要复制过去的配置文件
放在/etc/ansible/roles/web/files/下 ① WordPress目录 ② httpd.conf #从别的地方考过来

3.4 修改WordPress连接数据库的配置文件
cd wordpresscp wp-config-sample.php  wp-config.phpvim wp-config.php
/** WordPress数据库的名称 */
define('DB_NAME', 'wp');

/** MySQL数据库用户名 */
define('DB_USER', 'wpuser');

/** MySQL数据库密码 */
define('DB_PASSWORD', 'lovelinux');

/** MySQL主机 */
define('DB_HOST', '192.168.23.73');

/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');


3.5 添加web主剧本
vim /etc/ansible/web.yml- hosts: web  remote_user: root  roles:  - web

3.6 测试,没问题的话就下一步
(-C, –check 指定该参数后,执行playbook文件不会真正去执行,而是模拟执行一遍,然后输出本次执行会对远程主机造成的修改)
ansible-playbook -C /etc/ansible/web.yml


四、配置代理层:
4.1 添加task任务
vim /etc/ansible/roles/nginx/tasks/main.yml- name: install package  yum: name={{ item }}  with_items:  - nginx  - keepalived- name: config keepalived  template: src=keepalived.conf.j2 dest=/etc/keepalived/keepalived.conf  notify: restart keepalived- name: config nginx  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf  notify: restart nginx- name: start service  service: name={{ item }} state=started enabled=yes  with_items:  - keepalived  - nginx

4.2 添加handlers
vim /etc/ansible/roles/nginx/handlers/main.yml- name: restart keepalived  service: name=keepalived state=restarted- name: restart nginx  service: name=nginx state=restarted

4.3 准备template文件
①keepalived.conf.j2  ②nginx.conf.j2

4.4 修改keepalived模板文件keepalived.conf.j2
global_defs {   notification_email {     [email protected]   }   notification_email_from [email protected]   smtp_server 127.0.0.1   smtp_connect_timeout 30   router_id {{ansible_hostname}} #自带变量,通过ansible 主机IP -m setup 查询   vrrp_mcast_group4 224.0.0.43}vrrp_instance VI_1 {    state {{ state }} #已通过hosts文件定义变量    interface ens33 #网卡名    virtual_router_id 51    priority {{ priority }}    advert_int 1    authentication {        auth_type PASS        auth_pass lovelinux #设置密码    }    virtual_ipaddress {        192.168.23.88 #虚拟IP    }}

4.5 修改nginx模板文件nginx.conf.j2(定义在http段)
events {  worker_connections  1024;  ## Default: 1024}http{upstream servers2.mydomain.com {        server 192.168.23.61;        server 192.168.23.62;        ip_hash;}server{    listen 80;    server_name www.mydomain.com;    root        /usr/share/nginx/html;    location / {        proxy_pass //servers2.mydomain.com;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    }}}

4.6 添加nginx主剧本
vim /etc/ansible/nginx.yml- hosts: nginx  remote_user: root  roles:  - nginx

4.7 测试,没问题的话就下一步
ansible-playbook -C /etc/ansible/nginx.yml


五、配置mariadb:
5.1 配置mariadb的任务清单
vim /etc/ansible/roles/mysql/tasks/main.yml
roles/mysql/tasks/main.yml- name: install mariadb  yum: name=mariadb-server- name: copy sql file  copy: src=mysql.sql dest=/tmp/mysql.sql- name: start mysql service  service: name=mariadb state=started- name: config mysql  shell: "mysql < /tmp/mysql.sql"

5.2 设置files文件
vim /etc/ansible/roles/mysql/files/mysql.sqlCREATE DATABASE wp;GRANT ALL ON wp.* TO 'wpuser'@'%' IDENTIFIED BY 'lovelinux';

5.3 添加mysql主剧本
vim /etc/ansible/mysql.yml- hosts: mysql  remote_user: root  roles:  - mysql

5.4 测试,没问题的话就下一步
ansible-playbook -C /etc/ansible/mysql.yml


六、开始表演(执行剧本):
6.1 目录结构

6.2 分别执行
ansible-playbook  web.yml

ansible-playbook  nginx.yml

ansible-playbook  mysql.yml

6.3 访问页面
//192.168.23.88/wordpress

七、项目总结:
7.1 在定义web的playbook时复制wordpress时开始用的是copy??橹葱凶苁遣怀晒?,报错,google找到用synchronize??橐萩opy??楦咝О踩亩?,synchronize采用rsync复制文件,所以系统必须安装rsync 包否则无法使用这个???。
使用该??榈挠诺阌?/font>
① 增量复制(只复制与目标主机有差异的文件) ② 复制时采用压缩,对复制大文件支持优秀(用copy复制大文件会出错)




+1 2

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

点击关注更多内容
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则  允许回帖邮件提醒楼主

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

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

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

扫描微信二维码查看详情

客服 E-mail:[email protected]

本站由青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright ? 2012-2020

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up !


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


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


独家合作伙伴: 青云cloud

快速回复 双色球直播 返回列表
  • 社会主义是从私有制走向公有制,直至共产主义的到来。 2019-03-22
  • 这些人宁愿将每人吃过的饭菜倒掉喂猪,也不愿留给贫寒者,这种腐朽的资本主义的道德该收场了 2019-03-22
  • “中年发福”是一把杀猪刀,十几种慢性病因它而起…… 2019-03-22
  • 民航局:大面积延误预警后 航空公司要早决策调减航班 2019-03-21
  • 粽香情浓爱国心 民族团结一家亲 2019-03-21
  • 增强学术自信 讲清中国道路(人民要论) 2019-03-21
  • 我看“支付宝回收垃圾”这件事不错,应该支持。[微笑][微笑] 首先是提高的回收效率,其次便于集中处理旧物品,防止污染有利。 2019-03-21
  • 合肥市公立医疗机构1271种医疗服务价格公示 部分服务涨价 2019-03-20
  • 徐祥楠当选为中国家具协会六届理事会理事长 2019-03-20
  • 为什么说一直辛苦劳作的农民没有富起来?而不说一直勤劳的农民没有富起来? 2019-03-20
  • 南宁举行国庆升国旗仪式 庆祝新中国六十八岁华诞 2019-03-19
  • 河北巨鹿38万人参保长期护理险 2019-03-19
  • 2018“我们的中国梦”文化进万家活动在兰考启动 2019-03-19
  • 在北欧坐邮轮 开启慢节奏之旅邮轮游轮 2019-03-19
  • 6月11日凤凰直通车:上海进口中高端葡萄酒有望嫁接追溯技术酒业 公司 2019-03-18
  • 491| 492| 566| 727| 132| 813| 412| 897| 160| 587|