LVS+Keepalived实现高可用
Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能–判断LVS负载调度器、节点服务器的可用性,及时隔离并替换新的服务器,当故障主机恢复后将其重新加入集群。
实验环境客户端:192.168.136.130虚拟IP:192.168.136.100LVS1:192.168.136.133LVS2: 192.168.136.137RS1: 192.168.136.134RS2: 192.168.136.135
#关闭防火墙systemctl stop firewalld#临时关闭selinuxsetenforce 0
LVS配置#下载lvs和keepalivedyum install -y keepalived -y ipvsadm#修改LVS1的/etc/keepalived下的keepalived.confglobal_defs { router_id LVS-1}vrrp_instance VI_1 { state MASTER interface ens33 virtual_rout ...
LVS工作模式实验
主要演示LVS工作模式的DR模式和NAT模式实战
DR模式实验环境192.168.136.130 客户机192.168.136.133 LVS负载均衡器 虚拟IP地址 192.168.136.123192.168.136.134 RS真实服务器 虚拟IP地址 192.168.136.123192.168.136.135 RS真实服务器 虚拟IP地址 192.168.136.123
LVS负载均衡器配置(1)LVS准备VIP和路由
#配置虚拟ipifconfig ens33:0 192.168.136.123 broadcast 192.168.136.255 netmask 255.255.255.0#配置路由route add -net 192.168.136.123 dev ens33:0
#设置路由转发vi /etc/sysctl.confnet.ipv4.ip_forward=1 #开启路由转发net.ipv4.conf.all.send_redirects=0 #禁用路由重定向转发net.ipv4.conf.en ...
初识LVS
LVS(Linux Virtual Server)即Linux虚拟服务器,是章文嵩博士主导的开源负载均衡项目,LVS本身并不提供服务,只是把特定的请求转发给相应的真实服务器(real server),从而实现集群环境中的负载均衡。
LVS工作模式LVS工作模式主要有DR直接路由模式、NAT模式、TUN模式、FULL-NAT模式,这边我们主要讲DR模式和NAT模式。
DR模式(1)客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址是VIP(2)负载均衡器收到报文后,发现请求的是规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,将目标MAC地址改为RIP的MAC地址,并将此请求发给RS服务器(3)RS发现请求报文中目的MAC是自己的,就会将此报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端
NAT模式(1)客户端将请求发往前端的负载均衡器,此请求报文源地址是CIP(客户端IP),目标地址VIP(负载均衡器地址)(2)负载均衡器接收到报文后,发现请求是规则里面存在的地址,那么它将客户端请求报文的目标I ...
Ansible role的基本使用
roles是ansible自1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中
复杂场景:建议使用roles,代码复用性高
Roles各目录作用/roles/project/:项目名称,有以下子目录 1)files/:存放由copy或script模板等调用的文件 2)templates/:template模块查找所需要模板文件的目录 3)tasks/:定义task,role的基本元素,至少应该包含一个名为main.yml的文件;其他文件需要在此文件中通过include进行包含 4)handlers/:至少包含一个名为main.yml的文件;其他文件需要在此文件中通过include进行包含 5)va ...
Ansible playbook的基本使用
playbook是一个不同于ansible命令行方式的模式,其功能更强大灵活。简单地说,playbook是一个非常适合部署复杂应用程序的基础,它可以定制部署,可以按照指定的操作有序执行,支持同步和异步方式。playbook是通过yaml或者yml格式进行描述定义的。
playbook核心元素(1)Hosts 执行远程主机列表(2)Tasks 任务集(3)Varniables 内置变量或自定义变量在playbook中调用(4)Templates 模板,可替代模板文件中的变量并实现一些简单逻辑的文件(5)Handlers和notify 这2个需要结合使用,由特定条件触发的操作,满足条件方才执行(6)tags 标签,指定某条任务执行,用于运行playbook中的部分代码。ansible具有幂等性,因此会自动跳过没有变化的部分,即便如此,有些代码为测试其确实没有发生变化的时间依然非常长。此时,如果确定没有变化,可以通过tags跳过一些代码片段
运行playbook运行playbook的方式ansible-playbook <filename.yml> ... ...
Ansible的基本使用
本章主要介绍ansible基本模块的使用
Command在远程主机执行命令,默认模块,可忽略-m选项
#启动远程主机vsftpd服务ansible test -m command -a 'service vsftpf start'#此命令不支持$VARNAME <> | ; &等,建议使用shell模块实现ansible test -m command -a 'echo tang1611 | passwd --stdin tang' 不成功
Shell和command相似
ansible test -m shell -a 'echo tang1611 | passwd --stdin tang'
Script运行脚本
ansible test -m script -a f1.sh
Copy从控制端复制文件到被控端
#src指向的是要复制的文件,dest指向目标的目录,owner是所属组,mode是权限,backup是备份。如果目标存在,默认是覆盖的ansible test -m copy -a &q ...
Ansible安装
主要介绍自动化运维工具ansible的安装
查看ansible软件包信息yum info ansible
安装ansibleyum install ansible -y
设置ssh连接#修改被控主机的etc/ssh/sshd_config,GSSAPIAuthentication设置为no,UseDNS 设置为novi /etc/ssh/sshd_config#重启服务systemctl restart sshd#在主控机上生成ssh公钥,直接回车即可ssh-keygen -t rsa#将公钥拷贝到被控机ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.136.128#测试是否可以连接ssh root@192.168.136.128
使用ansible连接被控机#建议将/etc/ansible/ansible.cfg下的host_key_checking取消注释#日志功能,将/etc/ansible/ansible.cfg下的log_path注释取消#添加被控主机到/etc/ansible/hosts文件cat > /etc/a ...
Kubeadm部署Kubernetes集群
kubeadm是官方社区推出的快速部署kubernetes集群的工具
安装要求(1)一台或多台CentOS7.x-86_x64操作系统(2)硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多(3)集群中所有机器之间网络互通,可以访问外网,需要拉取镜像
准备环境#关闭防火墙systemctl stop firewalldsystemctl disable firewalld#关闭selinuxsed -i 's/enforcing/disabled/' /etc/selinux/configsetenforce 0#关闭swapswapoff -a 临时#添加主机名与IP对应关系(记得设置主机名)vi /etc/hosts192.168.136.129 k8s-master192.168.136.128 k8s-node1192.168.136.130 k8s-node2#将桥接的IPv4流量传递到iptables的链cat > /etc/sysctl.d/k8s.conf << EOFnet.bridge.bridge ...
Docker Compose(四)
本章主要介绍Docker Compose的基础概念,以及如何编写Docker Compose文件
概念Docker Compose是一个工具,它可以通过yml文件定义多容器的docker应用,通过一条命令就可以根据yml文件去创建或者管理多个应用
docker-compose.ymldocker-compose.yml由Services、Networks、volumes三个部分组成。一个Services代表一个container,这个container可以从dockerhub的image来创建,也可以从本地的Dockerfile build出来的image来创建Servides的启动类似于docker run,我们可以给其指定network和volume,所以可以给service指定network和volume的引用
services: db: image: postgres:9.4 volumes: - "db-data:/var/lib/postgresql/data" networks: - back-tiervol ...
Docker的持久化存储(三)
本章主要介绍一下Docker的持久化存储
对于Docker Container layer来说,我们在容器里面写数据,这个数据仅限于这个创建的容器,当我们把容器删掉,意味着我们的数据也会被删除,这种情况是我们不能接受的,所以Docker就引入了持久化机制。
Docker持久化数据的方案:(1)基于本地文件系统的Volume:可以在执行Docker create或者Docker run时,通过-v参数将宿主机的目录作为容器的数据卷。这部分功能便是基于本地文件系统的volume管理(2)基于plugin的Volume:支持第三方存储方案,比如NAS,AWS
Volume的类型(1)收管理的data Volume,由docker后台自动创建(2)绑定挂载的Volume,具体挂载位置可以由用户指定
Data Volume需要在Docker file中指定volume持久化路径
#创建mysql容器docker run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD mysql#查看刚刚创建的mysql容器默认创建的volumedocker vol ...