私有云技术
需要两台主机,一台控制节点,一台计算节点
控制节点:安装MySQL、Keystone、Glance、Nova、Neutron、Dashboard等服务,主要作为认证、镜像管理节点,以及提供Nova和Neutron服务的管理节点。提供Dashboard界面服务
计算节点:安装nova-compute和Neutron服务,Nova服务提供云主机服务,Neutron提供网络服务
两个节点设置第一张网卡为仅主机模式,第二张网卡为NAT模式,以及配置CPU虚拟化
计算节点至少使用4 GB内存,硬盘不小于50 GB
# hostnamectl set-hostname controller
# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=8c4cfa11-e842-4d06-9320-0cf31d42075c
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.10.10
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
# vi /etc/sysconfig/network-scripts/ifcfg-eno33554960
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno33554960
UUID=69fd9c09-d0ec-496d-a0da-c7fc077b0e7a
DEVICE=eno33554960
ONBOOT=yes
IPADDR=192.168.20.10
NETMASK=255.255.255.0
GATEWAY=192.168.20.2
# hostnamectl set-hostname compute
# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=604a502b-fe44-4284-8361-27ca70ed1a89
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.10.20
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
# vi /etc/sysconfig/network-scripts/ifcfg-eno33554960
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno33554960
UUID=9323fac9-2c37-4604-9dc9-777cbeefdcd6
DEVICE=eno33554960
ONBOOT=yes
IPADDR=192.168.20.20
NETMASK=255.255.255.0
GATEWAY=192.168.20.2
将XianDian-IaaS-v2.2.iso和CentOS-7-x86_64-DVD-1511.iso两个镜像包上传至controller节点的/root目录中
# ll
总用量 7012772
-rw-------. 1 root root 1635 5月 19 02:52 anaconda-ks.cfg
-rw-r--r--. 1 root root 4329570304 5月 20 17:11 CentOS-7-x86_64-DVD-1511.iso
-rw-r--r--. 1 root root 2851502080 11月 6 2017 XianDian-IaaS-v2.2.iso
将镜像文件挂载到/opt目录
# mkdir /opt/centos7.2
# mkdir /opt/iaas
# mount /root/CentOS-7-x86_64-DVD-1511.iso /opt/centos7.2/
mount: /dev/loop0 写保护,将以只读方式挂载
# mount /root/XianDian-IaaS-v2.2.iso /opt/iaas/
mount: /dev/loop1 写保护,将以只读方式挂载
# rm -rf /etc/yum.repos.d/CentOS-*
# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos7.2
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas/iaas-repo
gpgcheck=0
enabled=1
# rm -rf /etc/yum.repos.d/CentOS-*
# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=ftp://192.168.10.10/centos7.2
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=ftp://192.168.10.10/iaas/iaas-repo
gpgcheck=0
enabled=1
# yum install -y vsftpd
编辑配置文件
# vi /etc/vsftpd/vsftpd.conf
文件最上边添加代码
anon_root=/opt
重启服务
# systemctl restart vsftpd
# setenforce 0
# iptables -F
# iptables -X
# iptables -Z
# systemctl stop firewalld
安装iaas-xiandian软件包
# yum install -y iaas-xiandian
# vi /etc/xiandian/openrc.sh
HOST_IP=192.168.10.10
HOST_NAME=controller
HOST_IP_NODE=192.168.10.20
HOST_NAME_NODE=compute
RABBIT_USER=openstack
RABBIT_PASS=000000
DB_PASS=000000
DOMAIN_NAME=demo
ADMIN_PASS=000000
DEMO_PASS=000000
KEYSTONE_DBPASS=000000
GLANCE_DBPASS=000000
GLANCE_PASS=000000
NOVA_DBPASS=000000
NOVA_PASS=000000
NEUTRON_DBPASS=000000
NEUTRON_PASS=000000
METADATA_SECRET=000000
INTERFACE_NAME=eno33554960
CINDER_DBPASS=000000
CINDER_PASS=000000
BLOCK_DISK=md126p3
TROVE_DBPASS=000000
TROVE_PASS=000000
SWIFT_PASS=000000
OBJECT_DISK=md126p4
STORAGE_LOCAL_NET_IP=192.168.10.20
HEAT_DBPASS=000000
HEAT_PASS=000000
CEILOMETER_DBPASS=000000
CEILOMETER_PASS=000000
AODH_DBPASS=000000
AODH_PASS=000000
通过脚本安装基础服务
# iaas-pre-host.sh
安装完成后,退出并重新登陆,使主机名生效
通过脚本安装MYSQL数据库服务
# iaas-install-mysql.sh
通过脚本安装Keystone认证服务
# iaas-install-keystone.sh
通过脚本安装Glance镜像服务
# iaas-install-glance.sh
控制节点通过脚本安装计算服务
# iaas-install-nova-controller.sh
计算节点通过脚本安装计算服务
# iaas-install-nova-compute.sh
控制节点通过脚本安装网络服务
# iaas-install-neutron-controller.sh
# iaas-install-neutron-controller-gre.sh
计算节点通过脚本安装网络服务
# iaas-install-neutron-compute.sh
# iaas-install-neutron-compute-gre.sh
通过脚本安装Dashboard服务
# iaas-install-dashboard.sh
控制节点通过脚本安装块存储服务
# iaas-install-cinder-controller.sh
计算节点通过脚本安装块存储服务
# iaas-install-cinder-compute.sh
控制节点通过脚本安装对象存储服务
# iaas-install-swift-controller.sh
计算通过脚本安装对象存储服务
# iaas-install-swift-compute.sh
打开浏览器,访问92.168.10.10/dashboard
登录后即可访问到Dashboard系统
在控制节点找到qcow2镜像
# cd /opt/iaas/images/
# ls
CentOS_6.5_x86_64_XD.qcow2 CentOS_7.2_x86_64_XD.qcow2 MySQL_5.6_XD.qcow2
将qcow2镜像上传到平台中
# source /etc/keystone/admin-openrc.sh
# glance image-create --name "centos7.2" --disk-format qcow2 --container-format bare --progress < CentOS_7.2_x86_64_XD.qcow2
[=============================>] 100%
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | ea197f4c679b8e1ce34c0aa70ae2a94a |
| container_format | bare |
| created_at | 2020-05-20T19:39:58Z |
| disk_format | qcow2 |
| id | 554dedbb-4bc4-4825-ab8a-29385f1b6cfa |
| min_disk | 0 |
| min_ram | 0 |
| name | centos7.2 |
| owner | 07ea51a6ef9a4a3cb9f6930b2db2df7f |
| protected | False |
| size | 400752640 |
| status | active |
| tags | [] |
| updated_at | 2020-05-20T19:40:10Z |
| virtual_size | None |
| visibility | private |
+------------------+--------------------------------------+
在浏览器选择菜单栏“项目”→“网络”→“网络”命令,单击右侧“创建网络”按钮,创建虚拟机网络
在弹出的窗口中,输入网络名称为net-gre,管理状态为up,单击“前进”按钮
在弹出的对话框中填写子网信息,单击“前进”按钮
配置DHCP地址池,勾选“激活DHCP”复选框,添加“114.114.114.114”的NDS服务器,单击“已创建”按钮创建网络
选择菜单栏“管理员”→“系统”→“ 网络”命令,在已创建的外部网络中,选择“操作”下拉菜单中“编辑网络”菜单命令
在弹出的对话框中,勾选“外部网络”复选框,单击“保存”按钮
选择菜单栏“项目”→“网络”→“网络”命令,右侧单击“创建网络”按钮,创建虚拟机网络
在弹出的对话框中设置网络名称,然后单击“前进”按钮
设置子网名称为“int-subnet”,网络地址为“10.10.0.0/24”,网关IP地址为“10.10.0.1”,单击“前进”按钮
在弹出的对话框中,勾选“激活DHCP”复选框,并点击“已创建”按钮
选择菜单栏“项目”→“网络”→“路由”命令,右侧单击“新建路由”按钮,创建路由
在弹出的对话框中设置路由名称为“route”,在外部网络下拉菜单中,选择外部网络“net-gre”,单击“新建路由”按钮
单击新创建的路由名称,进入路由编辑页面
选择“接口”标签,单击“增加接口”按钮
在弹出的对话框中,选择“int-gre”内部网络,然后单击“提交”按钮
管理访问策略安全组,选择菜单栏“项目”→“计算”→“访问&安全”命令,管理default默认规则
单击右侧“添加规则”按钮,放行通信策略
放行所有ICMP协议,单击“添加”按钮
放行所有TCP协议,单击“添加”按钮
放行所有UDP协议,单击“添加”按钮
创建云主机,选择菜单栏“项目”→“计算”→“云主机”命令,单击右侧“创建云主机”按钮
在弹出的对话框中,输入创建的云主机名称以及数量,然后单击“下一步”按钮
在“源”中选择所要使用的镜像文件,单击对应镜像后的“+”按钮,然后单击“下一步”按钮
在“flavor”中选择所需云主机的资源类型,选择“m1.small”资源类型,单击对应的“+”按钮,然后单击“下一步”按钮
在“网络”中使云主机使用创建的int-gre内部网络,单击对应的“+”按钮,然后单击“启动实例”按钮
选择菜单栏的“项目”→“计算”→“云主机”命令,在“操作”的下拉菜单中选择“绑定浮动IP”菜单命令
在弹出的对话框中单击“+”按钮,分配一个IP地址
单击“分配IP”按钮,单击“关联”按钮,关联浮动ip地址
创建完成后,可以在“云主机”页面中显示云主机列表,可查看到创建的云主机状态为“运行”
回到电脑,window+R打开CMD窗口,通过ping命令进行测试,可以连通云主机
通过secureCRT工具,连接云主机,查看云主机IP地址,用户名为root,密码为00000
在OpenStack框架中,Keystone(OpenStack Identity Service)的功能是负责验证身份、校验服务规则和发布服务令牌的,它实现了OpenStack的Identity API。Keystone可分解为两个功能,即权限管理和服务目录。权限管理主要用于用户的管理授权。服务目录,类似一个服务总线,或者说是整个OpenStack框架的注册表。认证模块提供API服务、Token令牌机制、服务目录、规则和认证发布等功能
创建用户的具体格式
$ openstack user create [--domain <domain>]
[--password <password>]
[--email <email-address>]
[--enable | --disable]
<name>
创建一个名称为“alice”账户,密码为“mypassword123”,邮箱为“alice@example.com”
# source /etc/keystone/admin-openrc.sh
# openstack user create --password mypassword123 --email alice@example.com --domain demo alice
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | 1b3296609d0b4f82a7734e5439033935 |
| email | alice@example.com |
| enabled | True |
| id | fd6877910f884ef3b5b619adab16ada9 |
| name | alice |
+-----------+----------------------------------+
一个Project就是一个项目、团队或组织,当请求OpenStack服务时,必须定义一个项目
创建项目的格式
$ openstack project create [--domain <domain>]
[--description <description>]
[--enable | --disable]
<project-name>
创建一个名为“acme”的项目
# openstack project create --domain demo acme
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | |
| domain_id | 1b3296609d0b4f82a7734e5439033935 |
| enabled | True |
| id | 5a1740c1194d425b844f9df90e88d969 |
| is_domain | False |
| name | acme |
| parent_id | 1b3296609d0b4f82a7734e5439033935 |
+-------------+----------------------------------+
角色限定了用户的操作权限
创建角色的具体格式
$ openstack user create <name>
创建一个角色“compute-user”
# openstack role create compute-user
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | f18f7c0f40a54378aa4c51c3b250e56b |
| name | compute-user |
+-----------+----------------------------------+
添加的用户需要分配一定的权限,这就需要把用户关联绑定到对应的项目和角色
绑定用户和项目权限的具体格式
$ openstack role add --user <user> --project <project> <role>
给用户“alice”分配“acme”项目下的“compute-user”角色
# openstack role add --user alice --project acme compute-user
OpenStack平台所使用的用户可以通过Keystone组件进行查询
参与评论
手机查看
返回顶部