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
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。