Linux 整合实验 nginx 反代+upstream+keepalived+msyql 动静分离

1. 背景介绍:
    1.1为了能更好的理解Linux相关常用组件,并巩固记忆,特设定以下实验,欢迎大家给做指点。非常欢迎!!!!
    1.2实验主题:nginx 反代负载均衡wordpress,使用keepalived负载nginx, 动静分离,并使用zabbix监控各个项目
    1.3(后面博客会有更多项目,增加使用corosync+pacemaker高可用,使用elk处理收集日志,使用分布式文件系统来进行存储wordpress,最后采用ansible来自动化部署。)
2. 基础环境准备
    2.1 硬件环境准备(平台全采用Centos7)
                192.168.126.31  cent7-1  nginx+keepalived(主主模型,最前采用dns轮询)
                192.168.126.32  cent7-2  nginx+keepalived(主主模型)

                192.168.126.33  cent7-3 httpd 静态资源
                192.168.126.34  cent7-4 httpd 静态资源
               
                192.168.126.41 cent7-5 php-fpm 动态资源+memcached缓存(这里不做缓存集群)
                192.168.126.42 cent7-6 php-fpm 动态资源+zabbix
                192.168.126.43 cent7-7 mariadb(mysql)+共享存储(nfs)
                41-43性能较好
    2.2 配置思路
            31 32做nginx负载,keepalived主主模型两个vip 192.168.126.28,29 ,前端采用dns负载轮询,或者每次可以改本地hosts配置文件的方式实现。(keepalived主主模型可能存在两个vip在一个节点上的情况);nginx 使用proxy模块反代向后端两组主机,动态和静态,他们都用一个共享存储nfs,memcached做静态资源的缓存,也可以考虑做动态的;
3. 开始配置:
    3.1首先准备系统,我安装的最小化的系统(CentOS-7-x86_64-Minimal-1708.iso),everything那个版本最好别装,太卡。安装过程掠过,有的朋友有时间可以用cobbler和kickstart来装,更自动化但实验环境可能比较慢。
    1. yum仓库可能需要准备  nginx 的yum仓库。  vim /etc/yum.repos.d/nginx.repo
 
     3.2 使用一台ansible主机写playbook
          a. yum install ansible -y
            b. cd /etc/ansible/roles
            c.mkdir ./{ntdpate,httpd,nginx,keepalived,zabbix,mysql,zabbix}/{default,files,handle
rs,meta,tasks,templates,vars} -pv 创建各个角色相关目录
            d.cd /etc/ansible/ ;cp hosts{,.bak};vim hosts定义ansible  hosts 文件,(一般情况下,修改配置文件前自己先备份一下)
            e.hosts文件内容如下:hname用来做标识的变量,可以不定义
            [nginx]
            192.168.126.31 hname=cent7-1
            192.168.126.32 hname=cent7-2

            [httpd]
            192.168.126.33 hname=cent7-3
            192.168.126.34 hname=cent7-4

            [phps]
            192.168.126.41 hname=cent7-5
            192.168.126.42 hname=cent7-6

            [mysqls]
            192.168.126.43 hname=cent7-7
     
            f.ssh-keygen -t rsa  -P '';for i in {1..7};do  ssh-copy-id -i .ssh/id_rsa.pub  root@cent7-$i;done;ansible all -m ping; 生成ssh密钥,并分发给所有节点。保证可以采用ansible控制,然后ping  一下是否成功。这里要注意,采用root执行没有问题,不能将root密码放到ansible中,太危险。如果采用别的用户,最好放到管理员组中,并在sudo中定义好了,不然会有很多错误。这里降低复杂度,不做了。
    3.3 角色编写nginx:
           1. cd /etc/ansible/roles/nginx/
           2. vim task/

猜你喜欢

转载自blog.51cto.com/hyp0535/2400977