介紹#
一個小項目,使用 openstack 搭建 1 個控制節點,4 個計算節點,然後使用分佈式日誌查詢器查詢日誌
網絡結構#
controller | compute | compute02 | compute03 | compute04 | |
---|---|---|---|---|---|
ens33 | 192.168.10.10 | 192.168.10.20 | 192.168.10.30 | 192.168.10.40 | 192.168.10.50 |
ens34 | 192.168.20.10 | 192.168.20.20 | 192.168.20.30 | 192.168.20.40 | 192.168.20.50 |
ens33 和 34 是網絡接口 |
Openstack 搭建#
前期準備#
資源準備#
點擊下載資源包
雲盤
虛擬機配置#
我所使用的是 Vmware 16 Pro 版本
選擇更改設置
添加一張新的網卡,兩個都選擇僅主機模式,填寫對應的 ip 地址
- 網絡 1 僅主機 192.168.10.0
- 網絡 2 僅主機 192.168.20.0
新建虛擬機#
創建新的虛擬機 -> 選擇 centos7 iso -> 分配磁碟大小 40G-> 點擊完成
修改虛擬機配置
配置內存和處理器,然後添加網絡適配器,選擇剛剛設置好的兩個網卡
初步配置第一台虛擬機#
開機後設置安裝位置,選擇 40G 硬碟,done
配置用戶名和密碼,重啟
重啟完成後,輸入用戶名 root,輸入密碼(注意 linux 中輸入密碼是不顯示的),輸入完成按回車
接下來編輯網卡設置
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#按i進入編輯模式
BOOTPROTO=static
ONBOTT=yes
IPADDR=192.168.10.10
NETMASK=255.255.255.0
#修改完上面的內容後,按esc->冒號:wq退出即可
重啟一下
systemctl restart network
再修改一下另一個網卡
vi /etc/sysconfig/network-scripts/ifcfg-ens34
IPADDR=192.168.20.10
NETMASK=255.255.255.0
關閉防火牆
systemctl stop firewalld
systemctl disable firewalld
關閉安全策略
setenforce 0
vi /etc/selinux/config
SELINUX=disable
設置 hosts
vi /etc/hosts
192.168.10.10 controller
192.168.10.20 compute
192.168.10.30 compute02
192.168.10.40 compute03
192.168.10.50 compute04
到這裡基礎步驟就完成啦!
初步配置其他虛擬機#
將第一台機器關機,右擊克隆
一路下一步即可
我建議先克隆一台機器,當 compute 一個節點配置完畢後,再克隆配置好的 compute
配置 compute 節點#
同樣也是先改好 ip 地址然後通過 ssh 連接
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
ONBOTT=yes
IPADDR=192.168.10.20
NETMASK=255.255.255.0
systemctl restart network
vi /etc/sysconfig/network-scripts/ifcfg-ens34
IPADDR=192.168.20.20
NETMASK=255.255.255.0
配置源#
#controller中
hostnamectl set-hostname controller
#compute
hostnamectl set-hostname compute
上傳兩個 ISO
#controller
yum 源配置
vi /etc/yum.repos.d/local.repo
[centos]
name=centos
enabled=1
gpgcheck=0
baseurl=file:///opt/centos
[iaas]
name=iaas
enabled=1
gpgcheck=0
baseurl=file:///opt/iaas/iaas-repo
mkdir /opt/centos
mkdir /opt/iaas
----------------------------------------------------
#compute中
yum 源配置
rm -rf /etc/yum.repos.d/*
vi /etc/yum.repos.d/ftp.repo
[centos]
name=centos
enabled=1
gpgcheck=0
baseurl=ftp://192.168.10.10/centos
[iaas]
name=iaas
enabled=1
gpgcheck=0
baseurl=ftp://192.168.10.10/iaas/iaas-repo
#controller中
mount -o loop CentOS-7-x86_64-DVD-2009.iso /mnt/
cp -rvf /mnt/* /opt/centos
umount /mnt/
mount -o loop openstack.iso /mnt/
cp -rvf /mnt/* /opt/iaas/
umount /mnt/
yum repolist
rm -rf /etc/yum.repos.d/C*
yum install vsftpd -y
vi /etc/vsftpd/vsftpd.conf
anon_root=/opt
systemctl restart vsftpd
systemctl enable vsftpd
安裝 Openstack#
#controller&compute
yum install openstack-iaas -y
安裝完成刷新一下終端
接下來我們要配置 openstack 文件
在 controller 中
vi /etc/openstack/openrc.sh
ctrl+v+G+d
:%s/PASS=/PASS=000000/g
HOST_IP=192.168.10.10
#Controller Server hostname. example:controller
HOST_NAME=controller
#Compute Node Manager IP. example:x.x.x.x
HOST_IP_NODE=192.168.10.20,192.168.10.30,192.168.10.40,192.168.10.50
#Compute Node hostname. example:compute
HOST_NAME_NODE=compute
#--------------------Chrony Config-------------------##
#Controller network segment IP. example:x.x.0.0/16(x.x.x.0/24)
network_segment_IP=192.168.0.0/16
#External Network Interface. example:eth1
INTERFACE_NAME=ens34
#External Network The Physical Adapter. example:provider
Physical_NAME=provider
#First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
minvlan=1
#Last Vlan ID in VLAN RANGE for VLAN Network. example:200
maxvlan=400
#需要填disk可以隨便填
#Cinder Block Disk. example:md126p3
BLOCK_DISK=sdb
#The NODE Object Disk for Swift. example:md126p4.
OBJECT_DISK=sdc
#The NODE IP for Swift Storage Network. example:x.x.x.x.
STORAGE_LOCAL_NET_IP=192.168.10.20
其他地方按照提示樣例寫就可以
然後將這份配置文件也傳到 compute 節點中
scp /etc/openstack/openrc.sh [email protected]:/etc/openstack/
輸入密碼
安裝主要組件#
#controller&compute
iaas-pre-host.sh
重新連接ssh
#controller
iaas-install-mysql.sh
iaas-install-keystone.sh
iaas-install-glance.sh
iaas-install-placement.sh
iaas-install-nova-controller.sh
iaas-install-neutron-controller.sh
iaas-install-dashboard.sh
#compute
iaas-install-nova-compute.sh
iaas-install-neutron-compute.sh
分佈式日誌查詢#
在兩台機器上安裝 go
tar -zxf go1.17.2.linux-amd64.tar.gz -C /usr/local
vi /etc/profile
#go 環境變量
export GO111MODULE=on
export GOROOT=/usr/local/go
export GOPATH=/home/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
source /etc/profile
代碼鏈接
https://github.com/44maker/DistributedLogQuerier
將代碼上傳到兩台機器
到這裡所有的配置工作就完成啦
可以將機器關閉,然後克隆 compute 節點,再複製 3 台機器,安裝上文講過的配置一下 ip 地址,ssh 連接上
測試#
#在所有compute節點中
go run server.go
#在controller中
go build client.go
./client [query] [log file name]
example: ./client name
單元測試#
#生成測試的log文件
go run generate_testfiles.go
#在所有compute節點中
go run server.go
#在controller中
go test -v client_test.go
參考結果