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 连接上

Test#

#在所有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

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