1. 业务环境部署

  • wordpress-base:用于设置WEB集群的网络基础环境,包括所有节点网关指向出口路由器,添加DNS;
  • wordpress-web:用来增加nginx的虚拟主机节点,PHP-FPM连接redis,nfs挂载;
  • wordpress-proxy:用于添加nginx负载均衡的虚拟主机节点,LVS后端RS网络部署;
  • wordpress-mysql:用于创建wordpress的数据库和相关用户;

1.1 wordpress-base编写

  • 创建wordpress-base模块的目录结构:

    [root@xuzhichao cluster-roles]# mkdir wordpress-base/{tasks,meta,files,tamplates,handlers} -p
  • 编写主任务文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress-base/tasks/main.yml
    #1.把所有节点的网关指向192.168.20.17,增加DNS地址192.168.20.70
    - name: Modify Gateway And Dns
    lineinfile:
    path: /etc/sysconfig/network-scripts/ifcfg-eth1-static
    line: "GATEWAY=192.168.20.17\nDNS1=192.168.20.70" #2.重启网络
    - name: Restart Network
    systemd:
    name: network
    state: restarted
  • playbook文件修改如下:

    [root@xuzhichao cluster-roles]# cat wordpress_site.yml
    - hosts: all
    roles:
    - role: base-module
    - role: wordpress-base
    tags: base-module
    ......

1.2 wordpress-web编写

  • 创建wordpress-web的目录结构:

    [root@xuzhichao cluster-roles]# mkdir wordpress-web/{tasks,meta,files,templates,handlers} -p
  • nginx 虚拟主机任务文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress-web/tasks/nginx_web_vhost.yml
    - name: Copy Nginx Vhosts Configure File
    template:
    src: "wordpress.conf.j2"
    dest: "{{ nginx_install_directory }}/nginx/conf/conf.d/wordpress.conf"
    notify: Restart Nginx Server - name: Check Nginx Configure File
    shell: "{{ nginx_install_directory }}/nginx/sbin/nginx -t"
    register: Check_Nginx_Status
    changed_when:
    - Check_Nginx_Status.stdout.find('successful')
    - false
  • wordpress的代码部署如下:

    [root@xuzhichao cluster-roles]# cat wordpress-web/tasks/wordpress_code.yml
    #1.拷贝解压wordpress代码
    - name: Unarchive Wordpress Code
    unarchive:
    src: wordpress-5.7.2-zh_CN.tar.gz
    dest: "{{ wordpress_unarchive_directory }}"
    owner: "{{ web_user }}"
    group: "{{ web_group }}"
    mode: "0755" #2.创建图片上传目录,默认wordpress没有创建
    - name: Create wp-content/uploads directory
    file:
    path: "{{ wordpress_code_directory }}/wp-content/uploads"
    state: directory
    owner: "{{ web_user }}"
    group: "{{ web_group }}"
    mode: "0755"
    changed_when: false #3.挂载NFS
    - name: Mount NFS Point
    mount:
    src: "nfs01.xuzhichao.com:{{ nfs_share_path }}"
    path: "{{ wordpress_code_directory }}/wp-content/uploads"
    fstype: nfs
    opts: defaults
    state: mounted
  • php连接redis编译部署如下:

    [root@xuzhichao cluster-roles]# cat wordpress-web/tasks/php_connect_redis.yml
    #1.安装php-pecl-redis软件包
    - name: Install php-pecl-redis
    yum:
    name: php-pecl-redis
    state: present #2.拷贝解压redis扩展包
    - name: Unarchive php-Redis
    unarchive:
    src: redis-4.2.0.tgz
    dest: /root #3.生成配置文件
    - name: phpize
    shell:
    cmd: "{{ PHP_install_directory }}/php/bin/phpize"
    chdir: "/root/redis-4.2.0"
    changed_when: false #4.configure预编译
    - name: Configure
    shell:
    cmd: "./configure --with-php-config={{ PHP_install_directory }}/php/bin/php-config"
    chdir: "/root/redis-4.2.0"
    changed_when: false #5.编译安装
    - name: Make And Make Install
    shell:
    cmd: make && make install
    chdir: "/root/redis-4.2.0"
    changed_when: false
  • 主任务文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress-web/tasks/main.yml
    - include: wordpress_code.yml
    - include: nginx_web_vhost.yml
    - include: php_connect_redis.yml
  • nginx虚拟主机模板文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress-web/templates/wordpress.conf.j2
    log_format access_json '{ "@timestamp": "$time_iso8601", '
    '"remote_addr": "X-Forwarded_For", '
    '"referer": "$http_referer", '
    '"request": "$request", '
    '"status": $status, '
    '"bytes":$body_bytes_sent, '
    '"agent": "$http_user_agent", '
    '"x_forwarded": "$http_x_forwarded_for", '
    '"upstr_addr": "$upstream_addr",'
    '"upstr_host": "$upstream_http_host",'
    '"upstreamtime": "$upstream_response_time" }'; server {
    listen 80;
    server_name {{ wordpress_server_name }};
    access_log {{ nginx_install_directory }}/nginx/logs/access_wordpress.log access_json;
    charset utf-8,gbk; #防盗链
    valid_referers none blocked server_names *.b.com b.* ~\.baidu\. ~\.google\.; if ( $invalid_referer ) {
    return 403;
    } client_max_body_size 10m; location / {
    root {{ wordpress_code_directory }};
    index index.html index.php;
    } location ~ \.php$ {
    root {{ wordpress_code_directory }}; #fastcgi反向代理
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #fastcgi_param HTTPS on; <==此指令加上会导致http向https跳转,此处不能加。
    fastcgi_hide_header X-Powered-By;
    include fastcgi_params;
    } location ~ ^/(ping|pm_status)$ {
    access_log off;
    allow 192.168.20.0/24;
    allow 192.168.50.0/24;
    deny all;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
    include fastcgi_params;
    } location = /nginx_status {
    access_log off;
    allow 192.168.20.0/24;
    allow 192.168.50.0/24;
    deny all;
    stub_status;
    }
    }
  • wordpress-web的依赖的role如下,表示需要先执行依赖的角色,才可以执行本角色:

    [root@xuzhichao cluster-roles]# cat wordpress-web/meta/main.yml
    dependencies:
    - { role: nginx }
    - { role: php-fpm }
  • 新增的变量文件如下:

    [root@xuzhichao cluster-roles]# cat group_vars/all
    ......
    #wordpress相关变量
    wordpress_unarchive_directory: /data/nginx
    wordpress_code_directory: /data/nginx/wordpress
    wordpress_server_name: wordpress.xuzhichao.com
  • wordpress-web整体目录结构如下:

    [root@xuzhichao cluster-roles]# tree wordpress-web/
    wordpress-web/
    ├── files
    │   ├── redis-4.2.0.tgz
    │   └── wordpress-5.7.2-zh_CN.tar.gz
    ├── handlers
    │   └── main.yml
    ├── meta
    │   └── main.yml
    ├── tasks
    │   ├── main.yml
    │   ├── nginx_web_vhost.yml
    │   ├── php_connect_redis.yml
    │   └── wordpress_code.yml
    └── templates
    └── wordpress.conf.j2 5 directories, 9 files
  • playbook文件修改如下:

    [root@xuzhichao cluster-roles]# cat wordpress_site.yml
    - hosts: all
    roles:
    - role: base-module
    - role: wordpress-base
    tags: base-module - hosts: webservers
    roles:
    - role: wordpress-web
    tags:
    - wordpress-web - hosts: lbservers
    roles:
    - role: nginx
    tags: nginx - hosts: mysql
    roles:
    - role: mariadb
    tags: mysql - hosts: redis
    roles:
    - role: redis
    tags: redis - hosts: nfs
    roles:
    - role: nfs
    tags: nfs - hosts: lvs
    roles:
    - role: keepalived
    tags: keepalived - hosts: dns
    roles:
    - role: dns
    tags: dns
  • 运行palybook文件:

    [root@xuzhichao cluster-roles]# ansible-playbook  -t wordpress-web wordpress_site.yml
  • 检测web节点的虚拟主机配置文件如下:

    [root@web01 ~]# cat /soft/nginx/conf/conf.d/wordpress.conf
    log_format access_json '{ "@timestamp": "$time_iso8601", '
    '"remote_addr": "X-Forwarded_For", '
    '"referer": "$http_referer", '
    '"request": "$request", '
    '"status": $status, '
    '"bytes":$body_bytes_sent, '
    '"agent": "$http_user_agent", '
    '"x_forwarded": "$http_x_forwarded_for", '
    '"upstr_addr": "$upstream_addr",'
    '"upstr_host": "$upstream_http_host",'
    '"upstreamtime": "$upstream_response_time" }'; server {
    listen 80;
    server_name wordpress.xuzhichao.com;
    access_log /soft/nginx/logs/access_wordpress.log access_json;
    charset utf-8,gbk; #防盗链
    valid_referers none blocked server_names *.b.com b.* ~\.baidu\. ~\.google\.; if ( $invalid_referer ) {
    return 403;
    } client_max_body_size 10m; location / {
    root /data/nginx/wordpress;
    index index.html index.php;
    } location ~ \.php$ {
    root /data/nginx/wordpress; #fastcgi反向代理
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_hide_header X-Powered-By;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    } location ~ ^/(ping|pm_status)$ {
    access_log off;
    allow 192.168.20.0/24;
    allow 192.168.50.0/24;
    deny all;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
    include fastcgi_params;
    } location = /nginx_status {
    access_log off;
    allow 192.168.20.0/24;
    allow 192.168.50.0/24;
    deny all;
    stub_status;
    }
    }
  • 查看web节点服务启动情况:

    [root@web01 ~]# ss -ntl
    State Recv-Q Send-Q Local Address:Port Peer Address:Port ......
    LISTEN 0 128 127.0.0.1:9000 *:*
    LISTEN 0 128 *:80 *:* [root@web01 ~]# df
    Filesystem 1K-blocks Used Available Use% Mounted on
    ......
    nfs01.xuzhichao.com:/data/nfs 154057344 33664 154023680 1% /data/nginx/wordpress/wp-content/uploads

1.3 wordpress-mysql编写

注意:数据库建议使用新的数据库部署,若使用之前的数据库会存在问题,因为之前的数据库存储了wordpress的会话信息,对新的站点会造成影响。

  • 创建wordpress-mysql目录结构:

    [root@xuzhichao cluster-roles]# mkdir wordpress-mysql/{tasks,handlers,meta,files,templates} -p
  • 主任务文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress-mysql/tasks/main.yml
    #1.创建数据库wordpress
    - name: Create Wordpress Database
    mysql_db:
    login_host: "localhost"
    login_user: "root"
    login_password: "123456"
    #login_password: "123456"
    login_port: "3306"
    name: "{{ wordpress_mysql_database }}"
    state: present #2.授权远程连接的数据库
    - name: Grant Wordpress Database User
    mysql_user:
    login_host: "localhost"
    login_user: "root"
    login_password: "123456"
    #login_port: "3306"
    name: "{{ wordpress_mysql_user }}"
    password: "{{ wordpress_mysql_password }}"
    host: "{{ wordpress_mysql_host }}"
    priv: "{{ wordpress_mysql_user }}.*:ALL"
    state: present
  • 依赖文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress-mysql/meta/main.yml
    dependencies:
    - { role: mariadb }
  • 变量文件如下:

    [root@xuzhichao cluster-roles]# vim group_vars/all
    #wordpress相关变量
    wordpress_unarchive_directory: /data/nginx
    wordpress_code_directory: /data/nginx/wordpress
    wordpress_server_name: wordpress.xuzhichao.com wordpress_mysql_database: wordpress
    wordpress_mysql_user: wordpress
    wordpress_mysql_password: 123456
    wordpress_mysql_host: 192.168.20.%
  • playbook文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress_site.yml
    - hosts: all
    roles:
    - role: base-module
    - role: wordpress-base
    tags: base-module - hosts: webservers
    roles:
    - role: wordpress-web
    tags:
    - wordpress-web - hosts: lbservers
    roles:
    - role: nginx
    tags: nginx - hosts: mysql
    roles:
    - role: wordpress-mysql
    tags: wordpress-mysql - hosts: redis
    roles:
    - role: redis
    tags: redis - hosts: nfs
    roles:
    - role: nfs
    tags: nfs - hosts: lvs
    roles:
    - role: keepalived
    tags: keepalived - hosts: dns
    roles:
    - role: dns
    tags: dns
  • 运行playbook:

    [root@xuzhichao cluster-roles]# ansible-playbook -t wordpress-mysql wordpress_site.yml
  • 查看mysql是否成功创建:

    [root@web02 ~]# mysql -uwordpress -p123456 -h192.168.20.50
    Welcome to the MariaDB monitor. Commands end with ; or \g.
    Your MariaDB connection id is 36
    Server version: 10.5.2-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | test |
    | wordpress |
    +--------------------+
    3 rows in set (0.00 sec)

1.4 wordpress-proxy编写

  • 创建wordpress-proxy的目录结构:

    [root@xuzhichao cluster-roles]# mkdir wordpress-proxy/{tasks,templates,files,meta,handlers} -p
  • 主任务文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress-proxy/tasks/main.yml
    #创建证书存放目录
    - name: Create Cert directory
    file:
    path: "{{ nginx_install_directory }}/nginx/certs"
    state: directory #拷贝证书文件
    - name: Copy SSL Cer File
    copy:
    src: "{{ item.src }}"
    dest: "{{ item.dest }}"
    loop:
    - { src: "xuzhichao.key", dest: "{{ nginx_install_directory }}/nginx/certs/xuzhichao.key" }
    - { src: "xuzhichao.crt", dest: "{{ nginx_install_directory }}/nginx/certs/xuzhichao.crt" } #拷贝虚拟主机配置文件
    - name: Copy Nginx-LB Vhosts Configure
    template:
    src: "{{ item.src }}"
    dest: "{{ item.dest }}"
    loop:
    - { src: "wordpress.conf.j2", dest: "{{ nginx_install_directory }}/nginx/conf/conf.d/wordpress.conf" }
    - { src: "proxy_params.j2", dest: "{{ nginx_install_directory }}/nginx/conf/proxy_params" }
    notify: Restart Nginx Server #检查nginx配置文件
    - name: Check Nginx Configure File
    shell: "{{ nginx_install_directory }}/nginx/sbin/nginx -t"
    register: Check_Nginx_Status
    changed_when:
    - Check_Nginx_Status.stdout.find('successful')
    - false #LVS的DR模型设置虚IP,一致arp
    - name: LVS DR RS Scripts
    script: ../files/lvs_rs.sh start
  • handlers文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress-proxy/handlers/main.yml
    - name: Restart Nginx Server
    systemd:
    name: nginx
    state: reloaded
  • nginx负载均衡虚拟主机文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress-proxy/templates/wordpress.conf.j2
    upstream webservers {
    {% for host in groups["webservers"] %}
    server {{ host }}:80 weight=1 fail_timeout=5s max_fails=3;
    {% endfor %}
    } log_format access_json '{ "@timestamp": "$time_iso8601", '
    '"remote_addr": "X-Forwarded_For", '
    '"referer": "$http_referer", '
    '"request": "$request", '
    '"status": $status, '
    '"bytes":$body_bytes_sent, '
    '"agent": "$http_user_agent", '
    '"x_forwarded": "$http_x_forwarded_for", '
    '"upstr_addr": "$upstream_addr",'
    '"upstr_host": "$upstream_http_host",'
    '"upstreamtime": "$upstream_response_time" }'; server {
    listen 443 ssl;
    listen 80;
    server_name {{ wordpress_server_name }};
    access_log {{ nginx_install_directory }}/nginx/logs/access_wordpress.log access_json; ssl_certificate {{ nginx_install_directory }}/nginx/certs/xuzhichao.crt;
    ssl_certificate_key {{ nginx_install_directory }}/nginx/certs/xuzhichao.key;
    ssl_session_cache shared:ssl_cache:30m;
    ssl_session_timeout 10m; valid_referers none blocked server_names *.b.com b.* ~\.baidu\. ~\.google\.; if ( $invalid_referer ) {
    return 403;
    } location / { if ( $scheme = http ) {
    rewrite /(.*) https://{{ wordpress_server_name }}/$1 permanent;
    } proxy_pass http://webservers;
    include proxy_params;
    }
    } [root@xuzhichao cluster-roles]# cat wordpress-proxy/templates/proxy_params.j2
    proxy_set_header host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 30;
    proxy_send_timeout 60;
    proxy_read_timeout 60; proxy_buffering on;
    proxy_buffer_size 64k;
    proxy_buffers 4 64k;
  • lvs的rs脚本文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress-proxy/files/lvs_rs.sh
    #!/usr/bin/bash VIP1=192.168.20.200
    VIP2=192.168.20.201
    DEV1=lo:0
    DEV2=lo:1 case $1 in
    start)
    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "1" >/proc/sys/net/ipv4/conf/default/arp_ignore
    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    echo "2" >/proc/sys/net/ipv4/conf/default/arp_announce
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce cat >/etc/sysconfig/network-scripts/ifcfg-${DEV1} <<-EOF
    DEVICE=${DEV1}
    IPADDR=${VIP1}
    NETMASK=255.255.255.255
    ONBOOT=yes
    NAME=loopback1
    EOF cat >/etc/sysconfig/network-scripts/ifcfg-${DEV2} <<-EOF
    DEVICE=${DEV2}
    IPADDR=${VIP2}
    NETMASK=255.255.255.255
    ONBOOT=yes
    NAME=loopback2
    EOF
    ifup ${DEV1} # 启动网卡
    ifup ${DEV2}
    systemctl start nginx
    ;;
    stop)
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/default/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
    echo "0" >/proc/sys/net/ipv4/conf/default/arp_announce
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce ifdown ${DEV1} # 停止网卡
    ifdown ${DEV2}
    rm -f /etc/sysconfig/network-scripts/ifcfg-${DEV1}
    rm -f /etc/sysconfig/network-scripts/ifcfg-${DEV2}
    systemctl stop nginx
    ;;
    *)
    echo "Usage: sh $0 { start | stop }"
    esac
  • meta依赖文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress-proxy/meta/main.yml
    dependencies:
    - { role: nginx }
  • wordpress-proxy整体目录结构如下:

    [root@xuzhichao cluster-roles]# tree wordpress-proxy/
    wordpress-proxy/
    ├── files
    │   ├── lvs_rs.sh
    │   ├── xuzhichao.crt
    │   └── xuzhichao.key
    ├── handlers
    │   └── main.yml
    ├── meta
    │   └── main.yml
    ├── tasks
    │   └── main.yml
    └── templates
    ├── proxy_params.j2
    └── wordpress.conf.j2
  • 变量文件如下:

    [root@xuzhichao cluster-roles]# cat group_vars/all
    #创建基础环境变量
    web_group: nginx
    web_gid: 887
    web_user: nginx
    web_uid: 887 #nginx相关变量
    nginx_install_directory: /soft
    nginx_filename_tar: nginx-1.20.1.tar.gz
    nginx_version: nginx-1.20.1
    nginx_configure_options: --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_dav_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --with-file-aio
    gzip_contorl: "on"
    keepalive_timeout: 65
    worker_connections_num: 35566
    nginx_path: /soft/nginx/sbin/nginx #PHP相关变量
    PHP_install_directory: /soft
    PHP_tar_packages: php-7.3.16.tar.xz
    PHP_version: php-7.3.16 PHP_configure_options: --enable-fpm --with-pear --with-mysqli=mysqlnd --with-openssl --with-pdo-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-curl --with-freetype-dir --with-iconv --disable-debug --with-mhash --with-xmlrpc --with-xsl --enable-soap --enable-exif --enable-wddx --enable-bcmath --enable-calendar --enable-shmop --enable-sysvsem --enable-sysvshm --enable-syssvmsg php_fpm_listen_address: 127.0.0.1
    php_fpm_listen_port: 9000
    pm_max_children_num: 50
    php_path: /soft/php/sbin/php-fpm #Mysql相关变量
    mysql_user: mysql
    mysql_group: mysql
    mysql_base_directory: /usr/local/mysql
    mysql_data_directory: /data/mysql
    mysql_tar_ball: mariadb-10.5.2-linux-x86_64.tar.gz
    mysql_version: mariadb-10.5.2-linux-x86_64
    mysql_link_file_path: /usr/local/mysql
    mysqld_file: /etc/init.d/mysqld #NFS相关变量
    nfs_share_path: /data/nfs
    nfs_share_iprange: 192.168.20.0/24 #keepalived相关变量
    vrrp_interface: eth1
    virtual_router_id1: 51
    auth_pass: 1111
    virtual_ipaddress1: 192.168.20.200/24
    virtual_router_id2: 52
    virtual_ipaddress2: 192.168.20.201/24
    vips:
    - 192.168.20.200
    - 192.168.20.201
    track_ports:
    - 443
    - 80
    lb_algo: rr
    lb_kind: DR
    protocol: TCP #wordpress相关变量
    wordpress_unarchive_directory: /data/nginx
    wordpress_code_directory: /data/nginx/wordpress
    wordpress_server_name: wordpress.xuzhichao.com wordpress_mysql_database: wordpress
    wordpress_mysql_user: worpdress
    wordpress_mysql_password: 123456
    wordpress_mysql_host: 192.168.20.%
  • 最终playbook文件如下:

    [root@xuzhichao cluster-roles]# cat wordpress_site.yml
    - hosts: all
    roles:
    - role: base-module
    - role: wordpress-base
    tags: base-module - hosts: webservers
    roles:
    - role: wordpress-web
    tags:
    - wordpress-web - hosts: lbservers
    roles:
    - role: wordpress-proxy
    tags: wordpress-proxy - hosts: mysql
    roles:
    - role: wordpress-mysql
    tags: wordpress-mysql - hosts: redis
    roles:
    - role: redis
    tags: redis - hosts: nfs
    roles:
    - role: nfs
    tags: nfs - hosts: lvs
    roles:
    - role: keepalived
    tags: keepalived - hosts: dns
    roles:
    - role: dns
    tags: dns
  • 运行palybook:

    [root@xuzhichao cluster-roles]# ansible-playbook -t wordpress-proxy wordpress_site.yml
  • 查看nginx负载均衡的状态:

    #nginx虚拟主机配置文件:
    [root@lb01 ~]# cat /soft/nginx/conf/conf.d/wordpress.conf
    upstream webservers {
    server 192.168.20.22:80 weight=1 fail_timeout=5s max_fails=3;
    server 192.168.20.23:80 weight=1 fail_timeout=5s max_fails=3;
    } log_format access_json '{ "@timestamp": "$time_iso8601", '
    '"remote_addr": "X-Forwarded_For", '
    '"referer": "$http_referer", '
    '"request": "$request", '
    '"status": $status, '
    '"bytes":$body_bytes_sent, '
    '"agent": "$http_user_agent", '
    '"x_forwarded": "$http_x_forwarded_for", '
    '"upstr_addr": "$upstream_addr",'
    '"upstr_host": "$upstream_http_host",'
    '"upstreamtime": "$upstream_response_time" }'; server {
    listen 443 ssl;
    listen 80;
    server_name wordpress.xuzhichao.com;
    access_log /soft/nginx/logs/access_wordpress.log access_json; ssl_certificate /soft/nginx/certs/xuzhichao.crt;
    ssl_certificate_key /soft/nginx/certs/xuzhichao.key;
    ssl_session_cache shared:ssl_cache:30m;
    ssl_session_timeout 10m; valid_referers none blocked server_names *.b.com b.* ~\.baidu\. ~\.google\.; if ( $invalid_referer ) {
    return 403;
    } location / { if ( $scheme = http ) {
    rewrite /(.*) https://wordpress.xuzhichao.com/$1 permanent;
    } proxy_pass http://webservers;
    include proxy_params;
    }
    } #虚IP情况:
    [root@lb01 ~]# ip add show lo
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet 192.168.20.200/32 brd 192.168.20.200 scope global lo:0
    valid_lft forever preferred_lft forever
    inet 192.168.20.201/32 brd 192.168.20.201 scope global lo:1
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever #服务监听情况:
    [root@lb01 ~]# ss -ntl
    State Recv-Q Send-Q Local Address:Port Peer Address:Port
    LISTEN 0 128 *:443 *:*
    LISTEN 0 128 *:80 *:*

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

  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. kubernetes系列03—kubeadm安装部署K8S集群

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

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

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

  10. 《跟老男孩学Linux运维:Web集群实战》读书笔记

    Linux 介绍 Linux 安装 Linux 调优 Web 基础 Nginx 应用 LNMP 应用 PHP 缓存加速 Nginx 调优 MySQL 应用 NFS 网络文件共享 Nginx 反向代理与 ...

随机推荐

  1. 知名压缩软件 xz 被植入后门,黑客究竟是如何做到的?

    昨天,Andres Freund 通过电子邮件告知 oss-security@ 社区,他在 xz/liblzma 中发现了一个隐藏得非常巧妙的后门,这个后门甚至影响到了 OpenSSH 服务器的安全. ...

  2. AtCoder Grand Contest 037(without F)

    AGC037 A - Dividing a String 洛谷传送门 AGC037A 分析 考虑每一段长度只可能是一或二,设 \(dp[i]\) 表示以 \(i\) 为结尾的前缀最多可以分成多少段. ...

  3. 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit

    1.问题描述 升级到4.0.0.59版本后,通过pushService.getToken获取华为的token时报如下错误:Illegal application identity. 解决方案 Mate ...

  4. vue element序号翻页连续排序

    type="index" :index="indexMethod" // 序号翻页连续排序 indexMethod(index) { return (this. ...

  5. ODBC批量merge中出现主键冲突的分析

    ODBC 批量 merge 中出现主键冲突的分析 一. 文档概括 客户某个 merge 语句运行时,发生主键冲突报错. 经分析,其原因如下: 由于 merge 语句中,ON 里的判断条件(谓词)中存在 ...

  6. MongoDB命令行交互

    命令行交互 命令行交互一般是学习数据库的第一步,不过这些命令在后续用的比较少,了解即可. 角色命令 创建角色 use admin db.createUser({"user": &q ...

  7. 可视化学习:使用WebGL绘制圆形,实现色盘

    前言 在Canvas2D中实现圆形的绘制比较简单,只要调用arc指令就能在Canvas画布上绘制出一个圆形,类似的,在SVG中我们也只需要一个<circle>标签就能在页面上绘制一个圆形. ...

  8. mysql 必知必会整理—表[十一]

    前言 简单整理一下表和视图. 正文 MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 使用具有交互式创建和管理表的工具 表也可以 ...

  9. sass 基本常识

    一.什么是SASS SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. 本文总结了SASS的主要用法.我的目标是,有了这篇文章,日常的一 ...

  10. 07cj031,07CJ03-1图集免费下载

    简介 07CJ03-1轻钢龙骨石膏板隔墙.吊顶图集是中国建筑标准设计研究院组织编写的一部针对轻钢龙骨.石膏板材料用于非承重隔墙.室内吊顶装修的装修.建造参考资料,为用户提供专业的建造参考 下载 有需要 ...