1. WEB集群环境说明

WEB集群环境说明如下:

  • 客户端:模拟外网主机,地址:192.168.50.1;
  • DNS服务器:主机名:dns01;地址:ETH1:192.168.20.70;ETH2:192.168.50.70;
  • 路由器:主机名:router;地址:ETH1:192.168.20.17;ETH2:192.168.50.17,192.168.50.200192.168.50.201;
  • LVS+keepalived集群:
    • 主机名:lvs01;地址:ETH1:192.168.20.31;
    • 主机名:lvs02;地址:ETH1:192.168.20.32;
    • 虚IP:192.168.20.200和192.168.20.201;
    • LVS使用DR模式;
  • nginx负载均衡集群:
    • 主机名:lb01;地址:ETH1:192.168.20.19;
    • 主机名:lb02;地址:ETH1:192.168.20.20;
  • WEB集群:
    • 主机名:web01;地址:ETH1:192.168.20.22;
    • 主机名:web02;地址:ETH1:192.168.20.23;
  • MySQL服务器:主机名:mysql01;地址:ETH1:192.168.20.50;
  • redis服务器:主机名:redis01;地址:ETH1:192.168.20.61;
  • NFS服务器:主机名:nfs01;地址:ETH1:192.168.20.30;

WEB集群访问步骤如下:

  • 客户端访问网站wordpress.xuzhichao.com,把DNS指向192.168.50.70dns服务器,在dns服务器上将域名解析为两个虚地址,192.168.50.200192.168.50.201,使用dns轮询方式返回给客户端,达到负载分担的作用。
  • 出口路由器上有多个公网地址,192.168.50.17,虚地址192.168.50.200192.168.50.201,使用DNAT地址映射,把内网实际虚IP192.168.20.200192.168.20.201分别映射为192.168.50.200192.168.50.201
  • 路由器后端是LVS+keepalived的四层负载均衡,使用LVSDR模式,为达到两个LVS负载分担的,建立两组VRRP,两台LVS分别是两组虚IP地址192.168.20.200192.168.20.201MASTER节点,同时互为BACKUP节点。
  • LVS后端使用nginx负载均衡做7层负载均衡,因为nginx做负载均衡时会受到源端口号的限制,因此可以多部署几个nginx负载均衡,提升集群性能。
  • LVS后端是WEB集群,使用nginx+PHP组成,nginx提供静态站点,PHP-fpm解析php代码。
  • redis服务器用于解决WEB集群的缓存不一致问题,把会话缓存统一放置在redis服务器中。
  • mysql独立部署,提供数据库功能,存放结构化数据。
  • NFS服务器则为WEB集群提供共享存储,存放图片等资源,无论用户被调度到哪一台WEB节点,都可以访问相同的图片,视频等资源。

2. ansible部署WEB集群实现思路

ansible编排web集群的实现逻辑如下图,共分为三个阶段来实现:

  • 基础环境模块:

    基础环境模块采用一个单独的role来编写,是应用于所有主机的基础功能,主要包括:

    • 基础软件安装;
    • yum仓库配置;
    • 关闭firewalld防火墙,selinux
    • 添加基础用户;
  • 应用环境模块:

    应用环境模块需要把可能使用到的每一个应用都以一个独立的role来实现,仅实现软件的基础功能,例如安装,配置,启动等,以便于上层业务模块进行调用。

    应用模块要写的独立,全面,复用性好;

  • 业务环境模块:

    业务环境模块用以实现不同的业务或代码,例如wordpress,zrlog等,业务模块的实现需要调用应用环境的模块组件,再配合相关业务的定制配置,例如nginx虚拟主机,数据库创建,代码部署(应该由Jenkins实现)等。

3. ansible基础环境部署

  • 创建集群环境的目录,所有功能均在此目录下实现:

    [root@xuzhichao ansible]# mkdir cluster-roles/
  • cluster-roles/目录下建立ansible的配置文件,并修改内容如下:

    [root@xuzhichao cluster-roles]# grep -v "^#" ansible.cfg | grep -v "^$"
    [defaults]
    inventory = /data/ansible/cluster-roles/hosts
    gathering = smart
    fact_caching_timeout = 86400
    fact_caching = redis
    fact_caching_connection = 127.0.0.1:6379
    roles_path = /etc/ansible/roles:/data/ansible/roles:/opt
    host_key_checking = False
    private_role_vars = yes
  • 定义本项目的inventory主机清单文件:

    [root@xuzhichao cluster-roles]# cat hosts
    [dns]
    192.168.20.70 [lvs]
    192.168.20.31
    192.168.20.32 [webservers]
    192.168.20.22
    192.168.20.23 [lbservers]
    192.168.20.19
    192.168.20.20 [mysql]
    192.168.20.50 [redis]
    192.168.20.61 [nfs]
    192.168.20.30
  • 变量规划:整个集群环境的变量进行统一管理,统一放置在group_vars/all文件中,所有role都可以调用。

    [root@xuzhichao cluster-roles]# ll group_vars/
    total 0
    -rw-r--r-- 1 root root 0 Aug 9 09:19 all
  • 为所有主机设置ssh秘钥登录,使用expect脚本实现:

    [root@xuzhichao cluster-roles]# yum install expect
    
    [root@xuzhichao cluster-roles]# cat auto_sshkey.sh
    network=192.168.20
    user=root
    password=123456 for i in 19 20 22 23 30 31 32 50 61 70
    do
    /usr/bin/expect <<-EOF
    set timeout 30
    spawn ssh-copy-id $user@$network.$i
    expect {
    "yes/no" { send "yes\n"; exp_continue }
    "password:" { send "${password}\n"; exp_continue }
    }
    expect eof
    EOF
    done [root@xuzhichao cluster-roles]# sh auto_sshkey.sh
  • 测试所有被控主机能否正常使用ansible管理:

    [root@xuzhichao cluster-roles]# ansible all -m ping

ansible系列(31)--ansible实战之部署WEB集群架构(1)的更多相关文章

  1. Linux Web集群架构详细(亲测可用!!!)

    注意:WEB服务器和数据库需要分离,同时WEB服务器也需要编译安装MySQL. 做集群架构的重要思想就是找到主干,从主干区域向外延展. WEB服务器: apache nginx  本地做三个产品 de ...

  2. CentOS7-自动化部署web集群

    一.项目要求 1.创建role,通过role完成项目(可能需要多个role) 2.部署nginx调度器(node2主机) 3.部署2台lnmp服务器(node3,node4主机) 4.部署mariad ...

  3. Centos 7 部署lnmp集群架构

    前言介绍 lnmp的全程是 linux + nginx + mysql + php; lnmp就是上述系统及应用程序的简写组合: lnmp其实已经代表了一个用户正常对一个页面请求的流程,nginx接收 ...

  4. (二)Kubernetes kubeadm部署k8s集群

    kubeadm介绍 kubeadm是Kubernetes项目自带的及集群构建工具,负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,kubeadm是Kubernetes集群全生命周期的管理 ...

  5. Ansible自动化部署K8S集群

    Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...

  6. 003 ansible部署ceph集群

    介绍:在上一次的deploy部署ceph,虽然出了结果,最后的结果并没有满足最初的目的,现在尝试使用ansible部署一遍,看是否会有问题 一.环境准备 ceph1充当部署节点,ceph2,ceph3 ...

  7. ansible playbook部署ELK集群系统

    一.介绍 总共4台机器,分别为 192.168.1.99 192.168.1.100 192.168.1.210 192.168.1.211 服务所在机器为: redis:192.168.1.211 ...

  8. Haproxy配合Nginx搭建Web集群部署

    Haproxy配合Nginx搭建Web集群部署实验 1.Haproxy介绍 2.Haproxy搭建 Web 群集 1.Haproxy介绍: a)常见的Web集群调度器: 目前常见的Web集群调度器分为 ...

  9. 实战Centos系统部署Codis集群服务

    导读 Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可 ...

  10. kubernetes系列03—kubeadm安装部署K8S集群

    本文收录在容器技术学习系列文章总目录 1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm ...

随机推荐

  1. archlinux virtualbox使用文件共享 主机arch,客机windows8.1 windows10

    参照 https://www.cnblogs.com/cuitang/p/11263008.html 1.安装virtualbox增强功能VBoxGuestAdditions.iso (1)从virt ...

  2. Spring---AoP(面向切面编程)原理学习笔记【全】

    1.AOP 1.1.什么是AOP AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延 ...

  3. SQLSERVER 的表分区(水平) 操作记录1

    --创建表格 (注意) 是唯一(NONCLUSTERED)表示 非聚集索引 CREATE TABLE [dbo].[UserInfo]( [Id] [int] IDENTITY(1,1) NOT NU ...

  4. WPF动画教程(PointAnimationUsingPath的使用)

    PointAnimationUsingPath的介绍 PointAnimationUsingPath 是 WPF 中的一个类,它用于创建一个动画,该动画会沿着指定的路径移动一个点. 关于 PointA ...

  5. #容斥,广搜#nssl 1458 HR的疑惑 nssl 1460 逛机房

    nssl 1458 HR的疑惑 题目 求\([1\sim n]\)中有多少个正整数\(x\)满足 \[\sqrt[y]{x}\in N^{+},y>1 \] 其中\(n\leq 10^{18}\ ...

  6. #二分图匹配#UVA1194 Machine Schedule

    题目 有两台机器 \(A,B\) 分别有 \(n,m\) 种模式. 现在有 \(k\) 个任务.对于每个任务 \(i\) ,给定两个整数 \(a_i\) 和 \(b_i\)​, 表示如果该任务在 \( ...

  7. 深入了解 Java 方法和参数的使用方法

    Java 方法 简介 方法是一块仅在调用时运行的代码.您可以将数据(称为参数)传递到方法中.方法用于执行特定的操作,它们也被称为函数. 使用方法的原因 重用代码:定义一次代码,多次使用. 提高代码的结 ...

  8. MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录

    使用 ORDER BY 进行排序 使用 ORDER BY 语句按升序或降序对结果进行排序. ORDER BY 关键字默认按升序排序.要按降序排序结果,使用 DESC 关键字. 示例按名称按字母顺序排序 ...

  9. C#对接部标JT808协议实现北斗定位设备数据接收服务端

    一.前言介绍 开发一套能够支撑几万台北斗定位设备数据接收的服务端,用于接收北斗定位器定位数据的平台.项目基于windows平台,C#语言开发框架Net Framework4.8,TCP主要基于Supe ...

  10. CMakeLists.txt 编写模板

    新建文件   CMakeLists.txt # 设置cmake的最低版本 cmake_minimum_required(VERSION 2.8) # 指定为C++11 版本 set(CMAKE_CXX ...