IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Openstack概述和环境部署 -> 正文阅读

[系统运维]Openstack概述和环境部署

云计算概述

云计算的服务模型

  • laaS(基础架构即服务)
    提供底层IT基础设施服务,包括处理能力、存储空间、网络资源(比如迅雷)等
    面向对象一般是IT管理人员
  • PaaS (平台即服务)
    把安装好开发环境的系统平台作为一-种服务通过互联网提供给用户
    面向对象一般是开发人员
  • SaaS (软件即服务)
    直接通过互联网为用户提供软件和应用程序等服务
    面向对象一般是普通用户

OpenStack概述

  • NASA (美国国家航空航天局)和Rackspace共同发起
  • 以Apache许可证授权的自由软件和开放源代码项目
  • 为公有云及私有云的建设与管理提供软件的开源项目:
    公有云是所有人都能用
    私有云是企业内部使用,交给阿里云或者华为云托管
    专有云是企业内部使用,用的是自己的服务器搭建的
    混合云是几者都有,一般银行用的多

OpenStack核心组件

  • 计算服务(Compute):nova:管理实例生命周期,计算资源的单位,对Hypervisor进行屏蔽,支持多种虚拟化技术,支持横向扩展
  • 网络 服务(Network):neutron:负责虚拟网络的管理 为实例创建网络的拓扑结构
  • 镜像服务(Image Service):glance:提供虚拟机镜像模板的注册与管理,将做好的操纵系统拷贝为镜像模板,在创建虚拟机的时候,可支持多格式的镜像
  • 身份认证服务(Identify):keystone :负责OpenStack内外交互,以及内部所有组件交互时的认证
  • 控制面板服务(Dashboard) :horizon :用户登陆、使用的控制台界面
  • 块存储服务(Block Service):cinder:负责为运行实例提供持久的块存储设备
  • 对象存储服务(Object Storage):swift:提供基于云的弹性存储,支持集群单点故障
  • 计量服务(Telemetry):celimitor :用于度量、监控和控制数据资源的集中来源,为用户提供记账途径

OpenStack优势

  • 控制性:完全开源的平台,提供API接口,方便与第三方技术集成
  • 兼容性:OpenStack兼容其他公有云,方便用户进行数据迁移
  • 可扩展性:模块化设计,可以通过横向扩展,增加节点,添加资源
  • 灵活性:根据自己的需要建立相应基础设施。增加集群规模
  • 行业标准:众多IT领军企业已经加入到OpenStack项目中

OpenStack架构

OpenStack设计基本原则

  • 按照不同的功能和通用性划分不同的项目,拆分子系统
  • 按照逻辑计划、规范子系统之间的通信
  • 通过分层设计整个系统架构
  • 不同的功能子系统间提供统一的API接口

OpenStack逻辑框架

在这里插入图片描述

  • 创建过程:
    利用Nova服务创建虚拟机实例—>虛拟机实例采用Glance提供镜像服务—>使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中—>通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume) 和Glance提供的镜像(Image) 可以通过Swift的对象存储机制进行保存。
  • 主要组件
    全局:Keystone(全局认证)、Ceilometer(监控、计费)、Horizon(控制台)
    核心:Nove(计算)、Glance(镜像)、Neutron(网络)、Swift(块存储)、Cinder(对象存储)
    支持/辅助:Ironic(裸金属)、Trove(数据库管理)、Hent(数据编排)
  • 逻辑架构图分为几个层次
    ①逻辑架构图介绍了OpenStack核心组件有哪些,全局,核心,支持组件等
    ②以上的三个部分如何对接(根据公共API接口对接)
    ③单个核心项目内部,分为多个子功能模块,子功能模块之间用AMQP消息代理进行交互

OpenStack组建通信关系

  • 基于AMQP协议通信
    用于每个项目内部各个组件之间的通信
  • 基于SQL通信
    用于各个项目内部的通信
  • 基于HTTP协议进行通信
    通过各项目的API建立的通信关系,API是restful web API
  • 通过Native API实现通信
    OpenStack个主键和第三方硬件之间的通信

OpenStack物理架构图

在这里插入图片描述

OpenStack网络节点

  • 提供者网络
    联网管理
    ML2插件
    Linux网络工具
    Linux Bridge代理
    DHCP代理
    元数据代理(Metadata Agent)
  • 自服务网络
    联网管理
    ML2插件
    Linux网络工具
    Linux Bridge代理
    三层代理(L3 Agent)
    DHCP代理
    元数据代理(Metadata Agent)

OpenStack环境部署

1、控制节点ct
CPU:双核双线程-CPU虚拟化开启
内存:8G
硬盘:300G
双网卡:VM1-(局域网)192.168.100.1 NAT-192.168.1.10
操作系统:Centos 7.6(1810)-最小化安装
2、计算节点c1
CPU:双核双线程-CPU虚拟化开启
内存:8G
硬盘:300G
双网卡:VM1(局域网)-192.168.100.2 NAT-192.168.1.11
操作系统:Centos 7.6(1810)-最小化安装
3、计算节点c2
CPU:双核双线程-CPU虚拟化开启
内存:8G
硬盘:300G
双网卡:VM1(局域网)-192.168.100.3 NAT-192.168.1.12
操作系统:Centos 7.6(1810)-最小化安装

  • 安装基础环境包
yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre  pcre-devel expat-devel cmake  bzip2 lrzsz
//EXPAT C语言发开库
yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils
  • 然后配置时间同步
    控制节点配置(ct)
[root@ct ~]# yum install chrony -y
[root@ct ~]# vim /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 ntp.aliyun.com iburst		//配置阿里云时钟服务
allow 192.168.100.0/24			//允许100网段允许
[root@ct ~]# systemctl enable chronyd
[root@ct ~]# systemctl restart chronyd
  • 使用 chronyc sources 命令查询时间同步信息
[root@ct ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2  10   377    85   +823us[+1008us] +/-   24ms

  • 计算节点c1、c2时间同步配置
[root@c1 ~]# 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								//配置阿里云时钟服务器源
[root@c1 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* ct                            3   6   377    60   -293us[ -357us] +/-   24ms

  • 配置计划任务每隔2分钟同步一次
[root@ct ~]# crontab -l
*/2 * * * * /usr/bin/chronyc sources >>/var/log/chronyc.log

[root@c1 ~]# crontab -l
*/2 * * * * /usr/bin/chronyc sources >>/var/log/chronyc.log
[root@c2 ~]# crontab -l
*/2 * * * * /usr/bin/chronyc sources >>/var/log/chronyc.log

  • 查看网卡配置
    控制节点ct上的
[root@ct ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPV4_ROUTE_METRIC=90		//优先级,使得此网卡优先
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=3436e908-bbbf-4b72-8b12-2b933f807a77
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.10
NATMASK=255.255.255.0
GATEWAY=192.168.1.2

[root@ct ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.100.1
NATMASK=255.255.255.0

计算节点c1上

[root@c1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPV4_ROUTE_METRIC=90
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=be08df7f-9542-4495-8fb3-53a344ac10b2
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.11
NETMASK=255.255.255.0
GATEWAY=192.168.1.2

[root@c1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.100.2
NETMASK=255.255.255.0

计算节点c3

[root@c2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPV4_ROUTE_METRIC=90
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7aab080d-d50d-4c2a-a3c2-7a92e135be2a
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.12
NETMASK=255.255.255.0
GATEWAY=192.168.1.2

[root@c2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPV4_ROUTE_METRIC=90
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7aab080d-d50d-4c2a-a3c2-7a92e135be2a
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.12
NETMASK=255.255.255.0
GATEWAY=192.168.1.2

  • 在每个节点上写映射
[root@ct ~]# vi /etc/hosts
192.168.100.1 ct
192.168.100.2 c1
192.168.100.3 c2

  • 每个节点上做免密登录
[root@ct ~]#  ssh-keygen -t rsa	
[root@ct ~]#  ssh-copy-id ct
[root@ct ~]#  ssh-copy-id c1
[root@ct ~]#  ssh-copy-id c2

安装mariadb

  • 在控制节点ct上安装配置mariadb
[root@ct ~]# yum -y install mariadb mariadb-server python2-PyMySQL		//用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库;此包只安装在控制端
[root@ct ~]# yum -y install libibverbs	
  • 添加MySQL子配置文件,增加内容
[root@ct ~]# vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.100.1		//控制节点局域网地址
default-storage-engine = innodb		//默认存储引擎
innodb_file_per_table = on			//每张表独立表空间文件
max_connections = 4096				//最大连接数 
collation-server = utf8_general_ci	//默认字符集
character-set-server = utf8
  • 设置mariadb开机自启
[root@ct my.cnf.d]# systemctl enable mariadb
[root@ct my.cnf.d]# systemctl start mariadb
  • 执行mariadb安全配置脚本
[root@ct my.cnf.d]# mysql_secure_installation
Enter current password for root (enter for none): 			//回车
OK, successfully used password, moving on...
Set root password? [Y/n] Y
New password: 		//设置密码
Re-enter new password: 	//再次输入密码
Password updated successfully!
Reloading privilege tables..
 ... Success!

Remove anonymous users? [Y/n] Y
 ... Success!
Disallow root login remotely? [Y/n] N			//是否不允许root用户远程登陆
 ... skipping.
Remove test database and access to it? [Y/n] Y //是否删除test测试库
Reload privilege tables now? [Y/n] Y 

安装rabbitmq

  • 安装rabbitmq
[root@ct ~]# yum -y install rabbitmq-server
  • 设置开机自启
[root@ct my.cnf.d]# systemctl enable rabbitmq-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
[root@ct my.cnf.d]#  systemctl start rabbitmq-server.service

  • 创建消息队列用户,用于controler和 计算节点连接rabbitmq的认证(关联)
[root@ct my.cnf.d]# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack"
  • 配置openstack用户的操作权限(正则,配置读写权限)
[root@ct my.cnf.d]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"
[root@ct my.cnf.d]# netstat -antp | grep 5672
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      35618/beam.smp      
tcp        0      0 192.168.100.1:42292     192.168.100.1:25672     TIME_WAIT   -                   
tcp6       0      0 :::5672                 :::*                    LISTEN      35618/beam.smp   
  • 查看rabbitmq插件列表
[root@ct my.cnf.d]# rabbitmq-plugins list
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status:   * = running on rabbit@ct
 |/
[  ] amqp_client                       3.6.16
[  ] cowboy                            1.0.4
[  ] cowlib                            1.0.2
[  ] rabbitmq_amqp1_0                  3.6.16
[  ] rabbitmq_auth_backend_ldap        3.6.16
[  ] rabbitmq_auth_mechanism_ssl       3.6.16
[  ] rabbitmq_consistent_hash_exchange 3.6.16
[  ] rabbitmq_event_exchange           3.6.16
[  ] rabbitmq_federation               3.6.16
[  ] rabbitmq_federation_management    3.6.16
[  ] rabbitmq_jms_topic_exchange       3.6.16
[  ] rabbitmq_management               3.6.16
[  ] rabbitmq_management_agent         3.6.16
[  ] rabbitmq_management_visualiser    3.6.16
[  ] rabbitmq_mqtt                     3.6.16
[  ] rabbitmq_random_exchange          3.6.16
[  ] rabbitmq_recent_history_exchange  3.6.16
[  ] rabbitmq_sharding                 3.6.16
[  ] rabbitmq_shovel                   3.6.16
[  ] rabbitmq_shovel_management        3.6.16
[  ] rabbitmq_stomp                    3.6.16
[  ] rabbitmq_top                      3.6.16
[  ] rabbitmq_tracing                  3.6.16
[  ] rabbitmq_trust_store              3.6.16
[  ] rabbitmq_web_dispatch             3.6.16
[  ] rabbitmq_web_mqtt                 3.6.16
[  ] rabbitmq_web_mqtt_examples        3.6.16
[  ] rabbitmq_web_stomp                3.6.16
[  ] rabbitmq_web_stomp_examples       3.6.16
[  ] sockjs                            0.3.4

  • 开启rabbitmq的web管理界面的插件,端口为15672
[root@ct my.cnf.d]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
  amqp_client
  cowlib
  cowboy
  rabbitmq_web_dispatch
  rabbitmq_management_agent
  rabbitmq_management

Applying plugin configuration to rabbit@ct... started 6 plugins.
[root@ct my.cnf.d]# netstat -antp | grep 5672
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      35618/beam.smp      
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      35618/beam.smp      
tcp        0      0 192.168.100.1:51431     192.168.100.1:25672     TIME_WAIT   -                   
tcp        0      0 192.168.100.1:40878     192.168.100.1:25672     TIME_WAIT   -                   
tcp6       0      0 :::5672                 :::*                    LISTEN      35618/beam.smp      

  • 用web访问
    在这里插入图片描述
    在这里插入图片描述

安装memcached

  • 安装memcached是用于存储session信息;服务身份验证机制(keystone)使用Memcached来缓存令牌 在登录openstack的dashboard时,会产生一些session信息,这些session信息会存放到memcached中
  • 安装Memcached
[root@ct ~]# yum install -y memcached python-memcached		//python-*模块在OpenStack中起到连接数据库的作用
  • 修改Memcached配置文件
[root@ct ~]# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1,ct"

  • 然后设置开机自启
[root@ct my.cnf.d]# vim /etc/sysconfig/memcached 
[root@ct my.cnf.d]# systemctl enable memcached
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
[root@ct my.cnf.d]# systemctl start memcached
[root@ct my.cnf.d]# netstat -nautp | grep 11211
tcp        0      0 192.168.100.1:11211     0.0.0.0:*               LISTEN      37206/memcached     
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      37206/memcached     
tcp6       0      0 ::1:11211               :::*                    LISTEN      37206/memcached  

安装etcd

  • 安装etcd
[root@ct ~]# yum -y install etcd
  • 修改etcd配置文件
[root@ct etcd]# cat etcd.conf |grep -v "^#"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"		//数据目录位置
ETCD_LISTEN_PEER_URLS="http://192.168.100.1:2380"		//监听其他etcd member的url(2380端口,集群之间通讯,域名为无效值)
ETCD_LISTEN_CLIENT_URLS="http://192.168.100.1:2379"		//对外提供服务的地址(2379端口,集群内部的通讯端口)
ETCD_NAME="ct"		//集群中节点标识(名称)
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.100.1:2380"		//该节点成员的URL地址,2380端口:用于集群之间通讯。
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.100.1:2379"
ETCD_INITIAL_CLUSTER="ct=http://192.168.100.1:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"			//集群唯一标识
ETCD_INITIAL_CLUSTER_STATE="new"		//初始集群状态,new为静态,若为existing,则表示此ETCD服务将尝试加入已有的集群
若为DNS,则表示此集群将作为被加入的对象

  • 设置开机自启并开启
[root@ct etcd]# systemctl enable etcd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.
[root@ct etcd]# systemctl start etcd.service
[root@ct etcd]# netstat -anutp |grep 2379
tcp        0      0 192.168.100.1:2379      0.0.0.0:*               LISTEN      37679/etcd          
tcp        0      0 192.168.100.1:2379      192.168.100.1:37614     ESTABLISHED 37679/etcd          
tcp        0      0 192.168.100.1:37614     192.168.100.1:2379      ESTABLISHED 37679/etcd          
[root@ct etcd]#  netstat -anutp |grep 2380
tcp        0      0 192.168.100.1:2380      0.0.0.0:*               LISTEN      37679/etcd    
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:52:26  更:2021-08-22 13:53:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 20:39:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计