摘要:Linux


ansible
playbook
nfs
nginx
dns


一. 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
#grep相关命令
[root@cPen_B network-scripts]# cat /etc/passwd|grep -B 5 mail #注:查看前5行
[root@cPen_B network-scripts]# cat /etc/passwd|grep -A 5 mail #注:查看后5行
[root@cPen_B network-scripts]# cat /etc/passwd|grep -C 5 mail #注:中间 查看前后5行

1
2
[root@cPen_A ~]# vim /etc/ansible/ansible.cfg 	#注:ansible配置文件
forks = 5 #注:起5个进程去处理 -f 选项

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]# ansible web -m setup #注:查看节点服务器的信息 以字典形式展示
192.168.0.79 | SUCCESS => {
"ansible_facts": {
……
}
[root@cPen_A ansible]# ansible web -m setup -a "filter=ansible_all_ipv4_addresses"
#注:过滤获得指定信息
#注:获取 ansible-demo3 主机的 IPV4 地址
192.168.0.79 | SUCCESS => {
"ansible_facts": { #注:ansible_事实
"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]# vim hosts
[web]
192.168.0.77
[db]
192.168.0.35 ansible_ssh_user=root ansible_ssh_pass=123456

[root@C ansible]# vim ansible.cfg
# uncomment this to disable SSH key host checking
host_key_checking = False

1
2
3
api	接口 --> application interface
#注:写接口
json 有什么用?轻量级的数据交换格式

1
2
[root@cPen_A ansible]# ansible-doc -l		#注:查看ansible的模块
#注:doc 文档,l list

1
lastest表示安装  不是指最新的

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网页根目录下 --> 上线


1
2
[root@cPen_C lianxi]# yum provides nslookup
#注:查看命令从哪个包安装

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一键安装 脚本
#!/bin/bash

#author:cali
#time:2020-49
#company:sanchuang
#email:695811769@qq.com

mkdir -p /nginx2
cd /nginx2
#download nginx
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

#修改PATH变量
echo "PATH=/usr/local/nginx9/sbin:$PATH" >>/etc/profile
PATH=/usr/local/nginx9/sbin:$PATH

#启动
nginx