一. ansible
ansible
是什么?由哪些组成?
有什么作用?
paramiko --> 这个库/模块 ansible实现ssh功能
是什么?
ansible是一个自动化运维工具的名称
由哪些组成?
ansible组成:
1、host inventory --#定义客户机,可以对客户机进行分类:db类,web类…等等
2、playbook --#剧本 让主机按照我给定的剧本去完成一些事情
3、module --#模块 实现一个个功能的程序
4、pluging --#插件 实现一些额外的小功能
---------------------------------------
有什么作用?
装软件、卸软件、改配置、打补丁、做备份、跑脚本(运维工作)
---------------------------------------
ansible是python写的,底层是ssh
---------------------------------------
paramiko --》 这个库/模块 ansible实现ssh功能
---------------------------------------
sshpass 模块 --》linux命令 实现ssh登录
---------------------------------------
[root@cPen_A ~]# ansible --version #注:查看版本
ansible 2.9.15
二. grep
1 2 3 4
| [root@cPen_B network-scripts] [root@cPen_B network-scripts] [root@cPen_B network-scripts]
|
1 2
| [root@cPen_A ~] forks = 5
|
1 2 3
| ip地址显示不出来 service NetworkManager stop service network restart
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| template 模板 --> 绝大部分固定的,有几个是变量,根据ansible取机器上的值
[root@cPen_A ansible] 192.168.0.79 | SUCCESS => { "ansible_facts": { …… } [root@cPen_A ansible]
192.168.0.79 | SUCCESS => { "ansible_facts": { "ansible_all_ipv4_addresses": [ "192.168.0.79" ], "discovered_interpreter_python": "/usr/bin/python" }, "changed": false }
========================================================== ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect("某IP地址",22,"用户名", "口令") ========================================================== 解决使用密码连接,第一ssh过去的时候,需要输入yes的问题
[root@C ansible] [web] 192.168.0.77 [db] 192.168.0.35 ansible_ssh_user=root ansible_ssh_pass=123456
[root@C ansible]
host_key_checking = False
|
1 2 3
| api 接口 --> application interface
json 有什么用?轻量级的数据交换格式
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 项目 ansible
项目名称:使用ansible批量部署nginx集群和mysql集群 项目环境:centos8.2,ansible2.9.15,nginx1.19.5,mysql5.7.31 项目描述: 使用ansible去批量部署6台nginx服务器,1台NFS文件服务器,3台MySQL服务器,其中nginx采用源码编译安装,MySQL采用二进制安装,NFS采用yum安装方法。nginx的编译安装和MySQL的二进制安装过程提前编写好脚本,通过ansible下发到nginx和MySQL服务器上执行,全程采用playbook来实现批量自动化部署 项目步骤: 1.部署好11台linux虚拟机,全部的配置,采用1核2G的内存的配置,安装好centos8.2的系统。 2.然后在一台linux系统里安装部署ansible,采用yum安装。 3.编写好一键安装nginx的脚本,连同nginx.conf配置文件都指定好内容,方便后面的playbook使用。 4.编写好一键安装MySQL的脚本,连同my.cnf配置文件都指定好内容,方便后面的playbook使用。 5.在ansible服务器和所有的nginx,MySQL,NFS服务器之间建立ssh免密通道 6.最后编写ansible的playbook文件去统一部署nginx,MySQL,nfs服务器 7.测试整个安装部署是否成功 项目心得: 1.对ansible的在大规模集群里的使用有了一些了解,深入体会到批量部署的便捷 2.对集群有了一定的认识 3.编写脚本的能力有了提升 4.自己对*个故障的排除,提升自己的troubleshooting的能力 ============================================================================================ 写项目时 1.摆数据
|
nginx
是什么?有什么用?
nginx是一个web服务器
web就是网站
dns
domain name system 域名解析系统
www.aliyun.com --> ip
为什么需要DNS?
方便记住某个网站名字
ip很难记
正向解析:域名 --> ip
反向解析: ip --> 域名
在浏览器输入www,baidu.com回车后发生了什么?
1、浏览器缓存
2、hosts文件
3、本地dns服务器
4、转发服务器
5、根域名服务器
6、迭代过程
7、递归返回
8、直接访问
CDN内容分发网络:加速 (就近解析)
#注:缓存有滞后的
#注:视频业务大量使用CDN
记录类型
A记录 --> address record
www --> 120.77.248.190
需要上线一个自己的网站,有哪些流程(工作要做)?
1、购买云服务器,部署nginx,mysql,Python等环境
2、购买域名 www.chenpeng.com,绑定域名和云服务器 --> A记录 --> 备案(服务器在国内必须备案)
3、开发网站 --> 写网站
4、测试网站
5、上传到云服务器的nginx网页根目录下 --> 上线
NFS
network file system 网络文件系统
有什么用?
共享文件 --> 多台服务器使用相同的内容
#注:NFS是最廉价的解放方案,受网络影响、服务器硬件配置低,磁盘的速度,CPU,内存,网络带宽 都是比较差的
#注:比较贵的解决方案:上专业存储
#注:更好的是 SAN 光纤设备
SAN -->
NAS --> 网络附加存储
SAN一般指存储区域网络。存储区域网络(Storage Area Network,简称SAN)采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络
NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。
ansible
项目
dns
nginx一键部署
网站上线
NFS
SAN
NAS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| nginx一键安装 脚本
mkdir -p /nginx2 cd /nginx2
curl -O http://nginx.org/download/nginx-1.17.9.tar.gz
useradd lihu
tar xf nginx-1.17.9.tar.gz
cd nginx-1.17.9
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make
./configure --prefix=/usr/local/nginx9 --user=lihu --group=lihu --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module --with-stream
make -j 2 ; make install
echo "/usr/local/nginx9/sbin/nginx" >>/etc/rc.local chmod +x /etc/rc.d/rc.local
echo "PATH=/usr/local/nginx9/sbin:$PATH" >>/etc/profile PATH=/usr/local/nginx9/sbin:$PATH
nginx
|