主机名 | 安装服务 | wan | lan |
---|---|---|---|
lb01 | nginx+keepalived(抢占式) | 10.0.0.5(master) | 172.16.1.5 |
lb02 | nginx+keepalived(抢占式) | 10.0.0.6(backup) | 172.16.1.6 |
10.0.0.3(虚拟ip) | --- |
1.安装ansible 2.优化ansible 3.推送公钥 4.开启防火墙 5.开启80 443 873 nfs等端口和服务白名单 6.关闭selinux 7.建立同一的用户 1.安装nginx 2.拷贝nginx配置文件和 server 3.写入include文件(proxy_params) 4.安装keepalived 5.优化keepalived(启动脚本) 6.拷贝keepalived配置文件,配置master 7.拷贝keepalived配置文件,配置backup 8.启动nginx keepalived
mkdir /root/ansible/lb -p && \ vim /root/ansible/lb/hosts [lb_group] 172.16.1.5 ansible_ssh_port=22 asible_ssh_user=root 172.16.1.6 ansible_ssh_port=22 asible_ssh_user=root
mkdir /root/ansible/lb/conf.d && \ vim /root/ansible/lb/conf.d/wp.zh.conf upstream backend { server 10.0.0.7; server 10.0.0.8; server 10.0.0.9; } server { listen 80; server_name cs.wp.com cs.zh.com; location / { proxy_pass http://backend; include proxy_params; } }
vim /root/ansible/lb/nginx.conf user www; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
编辑paramsphp
vim /root/ansible/lb/proxy_params # 客户端的请求头部信息,带着域名来找我,我也带着域名去找下一级(代理机或者代理服务器) proxy_set_header Host $host; # 显示客户端的真实ip(和代理的全部IP) proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #nginx代理与后端服务器链接超时时间(代理链接超时) proxy_connect_timeout 60s; #nginx代理等待后端服务器的响应时间 proxy_read_timeout 60s; #后端服务器数据回传给nginx代理超时时间 proxy_send_timeout 60s; #nignx会把后端返回的内容先放到缓冲区当中,而后再返回给客户端,边收边传, 不是所有接收完再传给客户端 proxy_buffering on; #设置nginx代理保存用户头信息的缓冲区大小 proxy_buffer_size 4k; #proxy_buffer_size 8k; #proxy_buffers 缓冲区 proxy_buffers 8 4k; #proxy_buffers 8 8k; #使用http 1.1协议版本 proxy_http_version 1.1; #错误页面重定向 proxy_next_upstream error timeout http_500 http_502 http_503 http_504 http_404;
vim /root/ansible/lb/keepalived.service [Unit] Description=LVS and VRRP High Availability Monitor After=syslog.target network-online.target [Service] Type=forking PIDFile=/var/run/keepalived.pid #KillMode=process EnvironmentFile=-/etc/sysconfig/keepalived ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target
vim /root/ansible/lb/keepalived.master.conf global_defs { #全局配置 router_id lb01 #标识身份->名称(随意写) } vrrp_instance VI_1 { #标识身份->名称(随意) state MASTER #标识角色状态(随意) interface eth0 #网卡绑定接口(错绑后修改后须要重启服务器生效) virtual_router_id 50 #虚拟路由id(1-254),多个节点的设置必须同样(注释),不一样高可用的keepaliced virtual_router_id不能相同 priority 150 #优先级(主高备低)(修改后,重启服务器才能生效) advert_int 1 #监测间隔时间(不一样的节点设置必须相同)(检测同一路由id的keepalived,检测nginx是否存活) authentication { #认证(节点设置必须相同) auth_type PASS #认证方式(相同节点的话,相同) auth_pass 1111 #认证密码 } virtual_ipaddress { 10.0.0.3 #虚拟的VIP地址,(节点设置必须相同,最好是公网ip),可多设,每行一个,vip必须是公网ip,两个负载的eth0网卡也必须是公网ip } }
vim /root/ansible/lb/keepalived.backup.conf global_defs { router_id lb02 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 50 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.3 } }
vim /root/ansible/lb/lb.yml - hosts: all tasks: - name: jieya nginx_php.tar.gz unarchive: src: /root/nginx_php.tar.gz dest: /root - name: install nginx keepalived shell: "{{ item }}" with_items: - "yum localinstall -y /root/rpm/nginx*" - "yum install -y keepalived" when: ansible_hostname is match "lb*" - name: config nginx keepalived.server copy: src: "{{ item.src }}" dest: "{{ item.dest }}" with_items: - { src: "/root/ansible/lb/nginx.conf",dest: "/etc/nginx/"} - { src: "/root/ansible/lb/conf.d/wp.zh.conf",dest: "/etc/nginx/conf.d/"} - { src: "/root/ansible/lb/proxy_params",dest: "/etc/nginx/"} - { src: "/root/ansible/lb/keepalived.service",dest: "/usr/lib/systemd/system/"} - name: config master copy: src: "/root/ansible/lb/keepalived.master.conf" dest: "/etc/keepalived/keepalived.conf" when: ansible_hostname is match "lb01" - name: config backup copy: src: "/root/ansible/lb/keepalived.backup.conf" dest: "/etc/keepalived/keepalived.conf" when: ansible_hostname is match "lb02" - name: start nginx keepalived systemd: name: "{{ item }}" state: started enabled: yes with_items: - nginx - keepalived
1.执行base.yml [root@m01 ~]# ansible-playbook /root/ansible/base.yml -i /root/ansible/lb/hosts 2.执行lb.yml [root@m01 ~]# ansible-playbook /root/ansible/lb/lb.yml -i /root/ansible/lb/hosts
问题描述:没有执行base.yml,没有建立www用户,致使nginx没法启动(nginx -sreload发现)linux