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
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。