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 に割り当て -> 完了をクリック
仮想マシンの設定を変更します。
メモリとプロセッサを設定し、ネットワークアダプタを追加し、先ほど設定した 2 つのネットワークカードを選択します。

最初の仮想マシンの初期設定#

起動後、インストール位置を設定し、40G のハードディスクを選択し、完了をクリックします。
ユーザー名とパスワードを設定し、再起動します。
再起動が完了したら、ユーザー名 root を入力し、パスワードを入力します(Linux ではパスワードが表示されないことに注意してください)、入力が完了したら Enter を押します。
次に、ネットワークカードの設定を編集します。

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

ここまでで基本的なステップは完了です!

他の仮想マシンの初期設定#

最初のマシンをシャットダウンし、右クリックしてクローンします。
そのまま次へ進みます。
最初に 1 台のマシンをクローンし、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

2 つの 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
HOST_NAME=controller
#計算ノードマネージャーのIP。例:x.x.x.x
HOST_IP_NODE=192.168.10.20,192.168.10.30,192.168.10.40,192.168.10.50
#計算ノードのホスト名。例:compute
HOST_NAME_NODE=compute
#--------------------Chrony設定-------------------##
#コントローラーのネットワークセグメントIP。例:x.x.0.0/16(x.x.x.0/24)
network_segment_IP=192.168.0.0/16
#外部ネットワークインターフェース。例:eth1
INTERFACE_NAME=ens34

#外部ネットワークの物理アダプター。例:provider
Physical_NAME=provider

#VLANネットワークのVLAN範囲内の最初のVLAN ID。例:101
minvlan=1

#VLANネットワークのVLAN範囲内の最後のVLAN ID。例:200
maxvlan=400

#diskに必要な値を自由に入力できます
#Cinderブロックディスク。例:md126p3
BLOCK_DISK=sdb
#SwiftのNODEオブジェクトディスク。例:md126p4。
OBJECT_DISK=sdc
#SwiftストレージネットワークのNODE IP。例: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

分散ログクエリ#

2 台のマシンに 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
コードを 2 台のマシンにアップロードします。
これで全ての設定作業が完了しました。
マシンをシャットダウンし、compute ノードをクローンし、3 台のマシンをコピーして、前述の設定を行い、IP アドレスを設定し、SSH で接続します。

テスト#

#すべてのcomputeノードで
go run server.go
#controllerで
go build client.go
./client [query] [log file name]
例:  ./client name

ユニットテスト#

#テスト用のlogファイルを生成
go run generate_testfiles.go
#すべてのcomputeノードで
go run server.go
#controllerで
go test -v client_test.go

参考結果
Results.png

Results2.png

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。