发布于 

OpenStack & Distributed Log Querier

做一个小项目,使用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中输入密码是不显示的),输入完成按回车
接下来编辑网卡设置

1
2
3
4
5
6
7
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#按i进入编辑模式
BOOTPROTO=static
ONBOTT=yes
IPADDR=192.168.10.10
NETMASK=255.255.255.0
#修改完上面的内容后,按esc->冒号:wq退出即可

重启一下

再修改一下另一个网卡

1
2
3
vi /etc/sysconfig/network-scripts/ifcfg-ens34
IPADDR=192.168.20.10
NETMASK=255.255.255.0

关闭防火墙

1
2
systemctl stop firewalld
systemctl disable firewalld

关闭安全策略

1
2
3
setenforce 0
vi /etc/selinux/config
SELINUX=disable

设置hosts

1
2
3
4
5
6
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连接

1
2
3
4
5
6
7
8
9
10
11
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

配置源

1
2
3
4
#controller中
hostnamectl set-hostname controller
#compute
hostnamectl set-hostname compute

上传两个ISO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#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

1
2
#controller&compute
yum install openstack-iaas -y

安装完成刷新一下终端
接下来我们要配置openstack文件
在controller中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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节点中

1
2
scp /etc/openstack/openrc.sh root@192.168.10.20:/etc/openstack/
输入密码

安装主要组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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

1
2
3
4
5
6
7
8
9
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

1
2
3
4
5
6
#在所有compute节点中
go run server.go
#在controller中
go build client.go
./client [query] [log file name]
example: ./client name

单元测试

1
2
3
4
5
6
#生成测试的log文件
go run generate_testfiles.go
#在所有compute节点中
go run server.go
#在controller中
go test -v client_test.go

参考结果




👀总访问 次 | 🥷总访客

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。