负载均衡
安装haproxy

编写playbook.yml

cd /etc/haproxy/
编写haproxy.cfg
添加监控及认证

其它

systemctl start haproxy
查看端口可以看到80端口

关闭火墙
此时在网页中访问172.25.254.1/status看到server2与server3的后台状况

当关闭server2的httpd时,server2的后台条会变红

使用curl 172.25.254.1命令也只能看到server3

当再次执行playbook.yml时,会再次看到后台条变绿,使用curl 172.25.254.1命令看到server2和server3

编写haproxy.yml

开启火墙
cp /etc/haproxy/haproxy.cfg .
执行ansible-playbook haproxy.yml

此时仍可以在网页中访问到172.25.254.1/status

魔术变量(通过其自动添加节点)
cp haproxy.cfg haproxy.cfg.j2
vim haproxy.cfg.j2

在playbook.yml的最后加上

执行ansible-playbook playbook.yml

此时在/etc/haproxy/haproxy.xfg中以及写好了

新创建一个虚拟机server4
建立用户devops并让其密码为westos
visudo
在server1中,将公钥发送给server4的devops用户
然后编写/mnt/ansible/hosts

vim haproxy.yml

注:restarted换成reloaded更好,损耗更小
然后执行 ansible-playbook playbook.yml
此时就可以得到server4的后台

cd /mnt/ansible
mkdir group_vars
cd group_vars
mkdir webserver
cd webserver
vim vars

vim playbook.yml

scp 172.25.254.2:/etc/httpd/conf/httpd.conf httpd.conf.j2
vim httpd.conf.j2

执行ansible-playbook playbook.yml
安装tree,执行tree . 可以看到/mnt/ansible的结构

mkdir host_vars/server2
touch host_vars/server2/vars
touch host_vars/server2/vault
vim host_vars/server2/vars

执行ansible-playbook playbook.yml
此时发现几个主机的端口号并没有变为80
vim playbook.yml

执行ansible-playbook playbook.yml
此时发现端口号变为80
playbook.yml的优先级最高
vim playbook.yml

vim host_vars/server2/vars

执行ansible-playbook playbook.yml
此时发现端口号变为8080
cd host_vars/
mv server2/ 172.25.254.2 ##将文件名与hosts中的内容对应
cd 172.25.254.2/
vim vault
passwd: westos
对文件进行加密
ansible-vault encrypt vault
此时查看vault文件时就不能看到内容

vim playbook.yml

执行ansible-playbook playbook.yml --ask-vault-pass
此时在server2中查看/etc/shadow就是加密的

vim host_vars/172.25.254.2/vars

vim playbook.yml
此时执行ansible-playbook playbook.yml --ask-vault-pass就会跳过server2和server4

vim playbook.yml

vim group_vars/webserver/vars
vim host_vars/172.25.254.2/vars

执行ansible-playbook playbook.yml --ask-vault-pass
此时server2的端口为8080,server3和server4的端口号为80



主机变量高于组变量
自注册变量
vim haproxy.cfg.j2

vim playbook.yml

echo westos > web_pass
chmod 600 web_pass
ansible-playbook playbook.yml --vault-password-file web_pass
此时在/etc/haproxy/haproxy.cfg中就自动修改

block
vim playbook.yml 
执行ansible-playbook playbook.yml --vault-password-file web_pass
vim block.yml

ansible-playbook block.yml

当block有错误时,直接输出rescue的内容
vim block.yml

ignore会忽略错误继续执行

vim block.yml

always当存在错误会执行

当忽略错误时也会执行
vim block.yml


自定义变量
vim test.yml

ansible-playbook test.yml
注册变量
vim test.yml

ansible-playbook test.yml
vim test.yml

ansible-playbook test.ymlh=后可以得到westos

角色
mkdir roles
vim ansible.cfg

ansible-galaxy list就可以列出

cd roles/
ansible-galaxy role init apache ##生成新的目录

cd /roles/apache
vim tasks/main.yml

vim handlers/main.yml

cp /mnt/ansible/httpd.conf.j2 templates/
vim playbook1.yml

ansible-playbook playbook1.yml
此时server2的端口号没变
vim roles/apache/vars/main.yml

此时server2的端口号变为80
说明main.yml的优先级最高
cd roles/
ansible-galaxy init haproxy
cd haproxy/
vim tasks/main.yml

vim handlers/main.yml
cp /mnt/ansible/haproxy.cfg.j2 templates/
vim playbook1.yml

ansible-playbook playbook1.yml
该博客详细介绍了如何使用Ansible自动化配置Haproxy负载均衡器,包括安装、配置、监控、故障转移以及动态管理多个服务器节点。通过编写playbook.yml文件,实现了对服务器端口的自动化管理和更新,并展示了如何处理错误和异常,确保服务的高可用性和稳定性。此外,还涉及到了Ansible的角色和变量管理,以及如何加密敏感信息。
1214

被折叠的 条评论
为什么被折叠?



