1. 程式人生 > 其它 >Wine資料集——貝葉斯分類演算法(MATLAB實現)

Wine資料集——貝葉斯分類演算法(MATLAB實現)

技術標籤:ubuntuubuntu

文章目錄

Ansible學習筆記

背景:在構建了三個節點組成的叢集之後,我們需要進行工具的部署,這裡選擇自動化工具Ansible。

推薦學習bilibili上的Ansible課程,連結如下:

Reference: https://space.bilibili.com/364122352/channel/detail?cid=125322

1. 環境準備

採用VirtualBox建立的叢集環境作Ansible的學習,具體配置請參考如下連結:

https://gitee.com/petwan/public_doc/blob/master/VirtualBox%E4%BD%BF%E7%94%A8%E7%AC%94%E8%AE%B0.md

NodeIP Address
Master節點192.168.31.235
Node1節點192.168.31.153
Node2節點192.168.31.119

1.1 節點配置

為了方便進行學習,這裡選擇MobaXterm通過SSH的方法訪問3個節點。

在這裡插入圖片描述

為了後續學習方便,這裡對3個節點的hostname進行修改

sudo nano /etc/hostname
# 檢視修改後的hostname
cat /etc/hostname

對映如下:

NodeIP Addresshostname
Master節點192.168.31.235ansiblemaster
Node1節點192.168.31.153ansiblenode1
Node2節點192.168.31.119ansiblenode2

修改結束後,reboot三個節點。

1.2 Ansible安裝

這裡計劃在Master節點安裝Ansible,對兩個Node節點。

sudo apt-get install software-properties-common
sudo
apt-add-repository ppa:ansible/ansible sudo apt-get update sudo apt-get install ansible

驗證安裝,檢視ansible的安裝版本

ansible --version
# 執行結果
ansible 2.9.6
....
python version = 3.8.2 ...

本地測試

# ansible [IP] -m [module]
ansible localhost -m ping

測試結果

localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

1.3 節點通訊

雖然在我學習的過程中,3個節點的IP地址沒有發生過變化,但是因為之前3個節點沒有設定靜態地址,因此在開始學習ansible之前,我們希望通過hostname的方法進行節點的確定,而非IP地址。

在ansiblemaster節點上,我們新增兩個slave節點的資訊

sudo nano /etc/hosts
# 新增下面的IP和hostname
192.168.31.235 ansiblemaster
192.168.31.153 ansiblenode1
192.168.31.119 ansiblenode2

這樣,後續如果IP地址發生了變化,我們只需要在ansiblemaster節點上修改相應的hosts檔案即可。

測試一下

ping ansiblemaster
ping ansiblenode1
ping ansiblenode2

1.4 VS Code

因為Ansible的學習需要編寫YAML檔案,這裡採用VS Code作為編輯器。

但是需要注意的是,我沒有直接在ansiblemaster節點上安裝VS Code,而是安裝在了宿主機上。

直接安裝在ansiblemaster節點上會減少配置ssh remote的配置。

1.5 其他依賴

這部分的依賴會在使用過程中需要,當然也可以等問題遇到之後再安裝

# ansiblemaster節點
sudo apt install sshpass

2. Ansible學習

注意:因為工作的需要,才學習這個工具,實際應用中不需要了解具體的實現原理,因此這個學習筆記是以操作為主,直接跳過原理部分的介紹。

ansible在使用時,會有自己的預設的配置檔案,具體如下:

# 基本配置檔案
config file = /etc/ansible/ansible.cfg
# 叢集環境配置檔案
inventory file = /etc/ansible/hosts

如果使用者想要自定義以上的配置,有兩種選擇:

  • 修改相應的檔案
  • 過載上述檔案

2.1.1 開始

雖然我們已經通過ping測試過三個節點的連通性,但這裡我們採用ansible的ping模組測試以下,作為Ansible學習的開端。

如果我們想測試以下ansiblemaster與其他節點的連通,可以利用下列命令:

ansible all -m ping

結果提示:

[WARNING]: provided hosts list is empty, only localhost is available. Note that the
implicit localhost does not match 'all'

這就是在本節開頭說的問題,叢集環境配置檔案中沒有進行配置,我們在下一節中解決。

2.1.2 連通性測試

在VSCode中建立folder,並在folder中新建檔案hosts,並修改其內容,推送到ansible master節點上執行。

ansible_node1 ansible_connection=ssh ansible_user=ubuntu ansible_ssh_pass=slavenode1

ansible_node2 ansible_connection=ssh ansible_user=ubuntu ansible_ssh_pass=slavenode2

替換自己的ansible_user 和 ansible_ssh_pass

測試連通

# ansiblemaster
ansible all -m ping -i hosts

如果報出如下錯誤

“msg”: "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host’s fingerprint to your known_hosts file to manage this host.

說明控制端和被控制端第一次通訊,需要先新增指紋資訊。

可以通過ssh先進行控制端和被控制端的通訊,建立後再次執行上述命令即可

對於叢集而言,僅需開啟ansible中的以下選項即可

host_key_checking = False

返回結果如下

ansiblenode2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
ansiblenode1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

當然,也可以只針對hosts配置檔案中的某個節點進行連通測試

ansible ansiblenode1 -m ping -i hosts

2.1.3 合理利用hosts

對於叢集中的節點,通常會有幾個功能明確的分組,假設node1負責功能邏輯,node2負責資料庫,要對這些節點進行管理,可以在hosts配置檔案中對其進行分組。

以下的這個例子有點單薄,我們對已有的兩個節點進行分組,修改hosts檔案

[web]
ansiblenode1 ansible_connection=ssh ansible_user=ubuntu ansible_ssh_pass=slavenode1

[db]
ansiblenode2 ansible_connection=ssh ansible_user=ubuntu ansible_ssh_pass=slavenode2

可以按分組進行連通性測試

ansible web -m ping -i hosts

2.1.4 SSH免密

這個步驟比較常規

後續的筆記等待gitee完成後更新。