g4ti0r

g4ti0r

In a cyberpunk world, dare to stand alone and stay true to yourself

構建Openstack&分佈式日誌查詢器

介紹#

一個小項目,使用 openstack 搭建 1 個控制節點,4 個計算節點,然後使用分佈式日誌查詢器查詢日誌

網絡結構#

controllercomputecompute02compute03compute04
ens33192.168.10.10192.168.10.20192.168.10.30192.168.10.40192.168.10.50
ens34192.168.20.10192.168.20.20192.168.20.30192.168.20.40192.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

參考結果
Results.png

Results2.png

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