OpenStack環境をデプロイするためにあなたを連れて行きます

1.OpenStack環境のデプロイ

1.1展開の準備

  • 関連する仮想マシンリソース
1、控制节点ct(controller)
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:60G+300G(CEPH块存储)
双网卡:VM1-(局域网)192.168.70.10  NAT-192.168.140.50
操作系统:Centos 7.6(1810)-最小化安装
 
2、计算节点c1(computer01)
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:60G+300G(CEPH块存储)
双网卡:VM1(局域网)-192.168.70.11  NAT-192.168.140.60
操作系统:Centos 7.6(1810)-最小化安装
 
3、计算节点c2(computer02)
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:60G+300G(CEPH块存储)
双网卡:VM1(局域网)-192.168.70.12  NAT-192.168.140.70
操作系统:Centos 7.6(1810)-最小化安装

ここに画像の説明を挿入します

  • インストール中のネットワークカードの選択
注意:在安装过程中设置,选择Install CentOS 7
按tab键,输入命令 net.ifnames=0 biosdevname=0 
创建时修改网卡为eth0

ここに画像の説明を挿入します

  • ソフトウェアのインストールを最小限に抑える

ここに画像の説明を挿入します

  • ネットワークカードがeth0およびeth1であることを確認します

ここに画像の説明を挿入します

注意:

  • 複数のユーザーが同時に仮想マシンを作成するために送信すると、1つのノードだけがプレッシャーにさらされます。
  • 複数のノードがあり、制御ノードが要求を受信し、スケジューリングのために計算ノードに要求を送信します。
    複数の計算ノードがある場合、ユーザーは並行して操作できます。

1.2展開のアイデア

  • オペレーティングシステム+ OpenStackオペレーティング環境を構成します
  • OpenStackプラットフォームの基本サービス(rabbitmq、mariadb、memcache、Apache)を
    構成します
    rabbitmq:さまざまなコンポーネント間で情報を転送し、メッセージキューmariadb:データベース
    memcache:認証ストレージトークン、データベース

2.OpenStack基本環境を構成します

2.1ネットワークカード環境を構成する

  • ネットワークカード情報を構成し、ネットワークカードを再起動します

1)制御ノードのネットワークカード設定

vi /etc/sysconfig/network-scripts/ifcfg-eth0

ここに画像の説明を挿入します

vi /etc/sysconfig/network-scripts/ifcfg-eth1

ここに画像の説明を挿入します

systemctl restart network
ip addr

ここに画像の説明を挿入します

2)2つのコンピューティングノードの設定は次のとおりです。

ここに画像の説明を挿入します
ここに画像の説明を挿入します

  • ネットワークカードの状況とネットワーク接続を確認してください

2.2すべてのノードでの基本操作

  • 注:同期して実行する場合は、他のノードにエラーがあるかどうかに注意する必要があります。例として制御ノードを取り上げます。

2.2.1ファイアウォールとコア保護をオフにします

[root@ct ~]#systemctl stop firewalld
[root@ct ~]#setenforce 0
[root@ct ~]#systemctl disable firewalld
[root@ct ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2.2.2ホスト名マッピングの追加

[root@ct ~]#vi /etc/hosts
...//添加以下映射
192.168.70.10  ct
192.168.70.11  c1
192.168.70.12  c2

2.2.3相互作用のない構成

  • キーペアを生成し、それを他のノードに送信します(3つのデバイスによって同期されます)
[root@ct ~]# ssh-keygen -t rsa		//出现提示信息,按回车即可
[root@ct ~]# ssh-copy-id ct
[root@ct ~]# ssh-copy-id c1
[root@ct ~]# ssh-copy-id c2

ここに画像の説明を挿入します

  • 制御ノードで、相互作用のない構成が完了していることを確認します
[root@ct ~]# ssh root@c1
Last login: Fri Jan 29 18:39:25 2021 from 192.168.70.1
[root@c1 ~]# exit
登出
Connection to c1 closed.
[root@ct ~]# ssh root@c2
Last login: Thu Jan 28 23:49:05 2021 from 192.168.70.1
[root@c2 ~]# exit
登出
Connection to c2 closed.

ここに画像の説明を挿入します

  • 計算ノードでの検証
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します

2.2.4基本環境依存パッケージをインストールします

  • また、すべての機器にインストールされます
[root@controller ~]# yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre  pcre-devel expat-devel cmake  bzip2 

##net-tools: 可以使用ifconfig命令
##bash-completion: 表示自动补全
##pcre和pcre-devel:  表示支持正则和devel库
##expat-devel: 表示Apache依赖包,C语言开发,解析XML文档的开发库

[root@controller ~]# yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils

//centos-release-openstack-train:保证安装更新openstack版本为最新版本t版

##python-openstackclient:openstack的python客户端
##因为openstack中的API大多数是python编写的,并且连接数据库,也需要python
##openstack-selinux:openstack核心安全防护
##openstack-utils:openstack其它util工具

注意:以上安装均需安装两次以上,避免漏装

2.3時刻同期の設定

2.3.1制御ノードでの構成

  • 制御ノードに同期ソフトウェアをインストールします
[root@ct ~]# yum -y install chrony
  • 制御ノードの同期ソースとして設定
[root@ct ~]# vi /etc/chrony.conf 		//默认指向centos时间同步服务器
...//添加修改
#server 0.centos.pool.ntp.org iburst     //注释在线时间源
#server 1.centos.pool.ntp.org iburst     //注释在线时间源
#server 2.centos.pool.ntp.org iburst     //注释在线时间源
#server 3.centos.pool.ntp.org iburst     //注释在线时间源
server ntp.aliyun.com iburst   //设置为时间同步源

allow 192.168.70.0/24         //第26行下,添加为192.168.70网段提供时间同步
  • サービスを再起動し、時刻同期ソースを更新します
[root@ct ~]# systemctl restart chronyd 	 //重启服务
[root@ct ~]# systemctl enable chronyd    //设置开机自启动
[root@ct ~]# chronyc sources             //更新时间同步源
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2   6    17    37   +336us[+1188us] +/-   25ms
  • 注:iburstは、長い期間を直接同期できます

2.3.2計算ノードでの構成

  • コンピューティングノードの構成はほぼ同じです。例としてc1ノードを次に示します。
安装软件
[root@c1 ~]# yum -y install chrony

修改配置文件
[root@c2 ~]# vi /etc/chrony.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ct iburst		//注释在线时间源,并添加ct为时间同步源

重启服务
[root@c1 ~]# systemctl restart chronyd
[root@c1 ~]# systemctl enable chronyd

时间同步
[root@c1 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* ct                            3   6     7     2  +1030ns[+67838s] +/-   25ms
  • 計算ノードc2の構成が完了しているかどうかを確認します
    ここに画像の説明を挿入します

2.4タスクスケジュールの設定

  • すべてのノード
[root@ct ~]# which chronyc
/usr/bin/chronyc
[root@ct ~]# crontab -e
*/30  *  *  *  *  /usr/bin/chronyc sources >> /var/log/chronyc.log

注意:时间间隔设置不要太小,尽量拉长,因为频次太快,导致日志量越来越大,存储空间受影响

3.OpenStackシステム環境の構成

3.1MariaDBをインストールして構成する

3.1.1ソフトウェアをインストールする

[root@controller ~]# yum -y install mariadb mariadb-server python2-PyMySQL

//此包用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库;且此包只安装在控制端

[root@controller ~]# yum -y install libibverbs  //安装支持底层库文件

3.1.2MySQLサブ構成ファイルの追加

[root@ct ~]# vi /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address=192.168.70.10           //控制节点局域网地址
default-storage-engine=innodb        //默认存储引擎
innodb_file_per_table=on             //每张表独立表空间文件
max_connections=4096                 //最大连接数
collation-server=utf8_general_ci      //字符集
character-set-server=utf8
  • 展開
mysql 5.6(大版本)和mysql 5.7(小版本)区别:
大版本更新内容更为复杂
小版本更多是修复bug,打补丁
mysql 5.7把mysql 5.6 收购

在读写分离操作时 5.6与5.7,对应的默认库文件是 test mysql

客户端无法远程连接到数据库,由于5.7把 5.6 收购,故在5.7中进行调整:
底层库文件 test mysql 库文件
表空间(类似名称空间)
名称文件:是一种相互独立的隔离环境

3.1.3サービスを開始し、自動的に開始するようにブートを設定します

[root@ct ~]# systemctl start mariadb
[root@ct ~]# systemctl enable mariadb

3.1.4MariaDBセキュリティ構成スクリプトを実行する

[root@controller ~]# mysql_secure_installation

Enter current password for root (enter for none):     //当前密码,没有回车

Set root password? [Y/n] y                   //是否设置密码,设置密码为 abc123
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

Remove anonymous users? [Y/n] y       //是否移除匿名账户,移除
 ... skipping.
 
Disallow root login remotely? [Y/n] n     //不允许root账户远程登录

Remove test database and access to it? [Y/n] y     //是否移除test数据库,空数据库
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reload privilege tables now? [Y/n] y         //是否重置权限的表,重置
 ... Success!

3.1.5データベースにログインし、確認します

[root@ct ~]# mysql -uroot -pabc123		//登录数据库

ここに画像の説明を挿入します

3.2 RabbitMQのインストール(メッセージキュー)

  • 仮想マシンを作成するためのすべての指示は、コントロールエンドからrabbitmqに送信され、ノードノードはrabbitmqを監視します

3.2.1RabbitMQの関連する構成

(1)ソフトウェアをインストールする

[root@ct ~]# yum -y install rabbitmq-server

(2)RabbitMQサービスを開始し、起動時に開始するように設定します

[root@ct ~]# systemctl enable rabbitmq-server
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
[root@ct ~]# systemctl start rabbitmq-server

(3)コントローラーとノードノード間のrabbitmq接続を認証するためのメッセージキューユーザーを作成します

[root@ct ~]# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack"

(4)openstackユーザーの操作権限を構成します(通常、読み取りおよび書き込み権限を構成します)

[root@ct ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"

为什么需要配置读写权限:
Nova与Keystone进行通讯
1.rabbidb,把nova请求读取写入到本地内部
2.Nova把请求相关写入到Rabbitmq的内部
3.把消息传递过程中,也会进行读写操作
故授予独立的用户身份,读写权限

(5)クエリポート

[root@ct ~]# netstat -anptu | grep 5672
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      16125/beam.smp      
tcp6       0      0 :::5672                 :::*                    LISTEN      16125/beam.smp

//5672是Rabbitmq默认端口,25672是Rabbit的测试工具CLI的端口

ここに画像の説明を挿入します
(6)rabbitmqプラグインリストを表示する

[root@ct ~]# rabbitmq-plugins list

(7)rabbitmqのWeb管理インターフェースのプラグインを開きます。ポートは15672です。

[root@ct ~]# rabbitmq-plugins enable rabbitmq_management
[root@ct ~]# netstat -anptu | grep 5672
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      16125/beam.smp      
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      16125/beam.smp      
tcp        0      0 192.168.70.10:37068     192.168.70.10:25672     TIME_WAIT   -                   
tcp6       0      0 :::5672                 :::*                    LISTEN      16125/beam.smp

3.2.2アクセス検証

  • ブラウザで
    http://192.168.70.10:15672にアクセスします
    デフォルトのアカウントとパスワードはguestです。
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します

3.3memcachedをインストールします

3.3.1memcachedの概要

効果:

  • memcachedのインストールは、セッション情報の保存に使用されます。サービス認証メカニズムは、Memcachedを使用してトークンをキャッシュします。openstackダッシュボードにログインすると、いくつかのセッション情報が生成され、memcachedに保存されます。

memcachedの概要:

1.Memcached是一个自由开源的, 高性能,分布式内存对象缓存系统。

2.Memcached是以LiveJourmal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为
mixi、hatena、 Facebook. Vox、 LiveJournal等众多服务中提高Web应用扩展性的重要因素

3.Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、
API调用或者是页面渲染的结果

4.Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容
大部分流行的开发语言。

本质上,它是一个简洁的key-value存储系统。
一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
并且在BAT里,redis已经逐渐取代了memcached,成为分布式场景广泛使用的缓存方案

3.3.2memcachedを構成する

  • ソフトウェアをインストールする
[root@ct ~]# yum install -y memcached python-memcached
//python-*模块在OpenStack中起到连接数据库的作用
  • memcached構成ファイルを変更します
[root@ct ~]# vi /etc/sysconfig/memcached
PORT="11211"      //默认端口号
USER="memcached"  //默认账户名
MAXCONN="1024"    //最大连接数
CACHESIZE="64"    //缓存大小
OPTIONS="-l 127.0.0.1,::1,ct"		//修改,添加主机名ct
  • サービスを再起動し、ポートを確認します
[root@ct ~]# vi /etc/sysconfig/memcached
[root@ct ~]# systemctl enable memcached
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
[root@ct ~]# systemctl start memcached
[root@ct ~]# netstat -anptu | grep 11211
tcp        0      0 192.168.70.10:11211     0.0.0.0:*               LISTEN      17659/memcached     
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      17659/memcached     
tcp6       0      0 ::1:11211               :::*                    LISTEN      17659/memcached

ここに画像の説明を挿入します

3.4etcdをインストールする

3.4.1etcd機能

简单: 基于HTTP+JSON的API让你可以用CURL命令就可以轻松使用。
安全: 可以选择SSL客户认证机制。
快速: 每个实例每秒支持一千次写操作。
可信: 使用Ralf算法充分实现了分布式。

3.4.2アプリケーションシナリオ

  • サービスディスカバリ
  • ニュースのパブリッシュとサブスクライブ
  • 負荷分散
  • 分散通知と調整
  • 分散ロック
  • 分散キュー
  • クラスターの監視とリーダーの選出

拡張:

为什么使用etcd而不用Zookeeper?

相比较之下,Zookeeper有如下缺点:
1.复杂。 Zookeeper的部署维护复杂,管理员必须掌握一系列的知识和技能;而Paxos强一致性算法也是素来以复杂难懂
而闻名于世;另外,Zookeeper的使用也比较复杂,需要安装客户端,官方只提供Java和C的两种语言的接口。

2.Java编写。这里不是对Java有偏见,而是Java本身就偏向重型应用,它会引入大量的依赖。而运维人员则普遍希望机器
集群能尽可能的简单,维护起来也不容易出错

3.发展缓慢。 Apache基金会项目特有的“Apache Way”在开源界也饱受争议,其中一大原因就是由于基金会庞大的结构
和松散的管理导致项目发展缓慢。

etcd作为一个后起之秀,其优点也很明显:
1.简单。 使用Go编写部署简单;使用HTTP作为接口使用简单;使用Raft算法保证强一致性让用户易于理解。

2.数据持久化。 etcd默认数据一更新就进行持久化。

3.安全。 etcd支持SSL客户端安全认证。

3.4.3etcd構成のインストール

  • ソフトウェアをインストールする
[root@ct ~]# yum -y install etcd
  • etcd構成ファイルを変更する
[root@ct ~]# vi /etc/etcd/etcd.conf
...//修改以下配置
5	ETCD_LISTEN_PEER_URLS="http://192.168.100.11:2380"
6	ETCD_LISTEN_CLIENT_URLS="http://192.168.100.11:2379"
9	ETCD_NAME="controller"
20	ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.100.11:2380" 
21	ETCD_ADVERTISE_CLIENT_URLS="http://192.168.100.11:2379" 
26	ETCD_INITIAL_CLUSTER="controller=http://192.168.100.11:2380"
27	ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
28	ETCD_INITIAL_CLUSTER_STATE="new" 
  • サービスを開始し、スタートアップを自動的に開始するように設定します
[root@ct ~]# systemctl enable etcd
Created symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.
[root@ct ~]# systemctl start etcd
[root@ct ~]# systemctl status etcd

ここに画像の説明を挿入します

  • 検出ポート
[root@ct ~]# netstat -anpt | grep 2379

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_42449832/article/details/113343003