mycpen

Mycpen

记录学习历程与受益知识
github
telegram
bilibili

26_Linux基础-项目轮廓-回顾ansible-dns-nfs-nginx

一. 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#

#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行

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

ip地址显示不出来
service NetworkManager stop		#注:这个服务影响的
service network restart

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

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

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

lastest表示安装  不是指最新的

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


[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


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
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。