一、熟悉OpenStack图形界面操作
1、了解Horizon项目
- Horizon项目
- 各OpenStack服务的图形界面都是由Horizon提供的。
- Horizon提供基于Web的模块化用户界面。
- Horizon为云管理员提供一个整体的视图。
- Horizon为终端用户提供一个自主服务的门户。
- Horizon由云管理员进行管理与控制,云管理员可以通过Web界面管理OpenStack平台上的资源。
- Horizon功能架构
2、访问OpenStack主界面
- OpenStack仪表板登录界面
OpenStack安装过程中会默认创建两个云用户账户,一个是云管理员账号admin ,另一个是用于测试的普通用户账号demo。使用PackStack安装器安装时如果没有提供应答文件,这两个账号的初始密码会随机生成,保存在keystonerc_admin和keystonerc_demo文件(位于安装时linux的主目录)。OS_PASSWORD为密码
[root@node-a ~]# cat /root/keystonerc_admin
unset OS_SERVICE_TOKEN
export OS_USERNAME=admin
export OS_PASSWORD='8dcf323357f74aec'
export OS_REGION_NAME=RegionOne
export OS_AUTH_URL=http://192.168.241.10:5000/v3
export PS1='[\u@\h \W(keystone_admin)]\$ '
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
[root@node-a ~]# cat /root/keystonerc_demo
unset OS_SERVICE_TOKEN
export OS_USERNAME=demo
export OS_PASSWORD='8a8e6279c2154dc7'
export PS1='[\u@\h \W(keystone_demo)]\$ '
export OS_AUTH_URL=http://192.168.241.10:5000/v3
export OS_PROJECT_NAME=demo
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
二、创建和操作虚拟机实例
1、了解并准备创建虚拟机实例的前提
- 创建虚拟机实例的前提条件
- 实例的源——镜像、实例快照(镜像快照)、卷或卷快照。
- 实例类型——实例规格,表示一组特定的虚拟资源。
- 密钥对——虚拟机实例启动时注入镜像中的SSH凭据。
- 安全组——一组特定防火墙规则的集合。
- 网络——虚拟网络,在云中为虚拟机实例提供网络通信,使实例能够访问内部网络和外部网络
2、熟悉创建虚拟机实例的基本步骤
1、准备镜像
默认的镜像列表:这是Packstack安装器预置的,用来测试Linux操作系统镜像。免费、体积非常小的Linux操作系统发行版。要使用Cirros操作系统进行镜像测试,使用admin身份将其删除并从官网下载新的Cirros操作系统镜像。
- 下载Cirros镜像文件:https://www.rdoproject.org/resources/image-resources/
- 创建Cirros操作系统镜像-admin:
- 下载Fedora操作系统的镜像:Fedora Cloud | The Fedora Project
- 创建Fedora操作系统镜像-demo:
- 为便于示范,以demo身份创建为私有的可见性。
- 新创建的两个镜像:
- 可以看到"cirros"镜像虽然由云管理员创建,但由于是公有的,demo项目也可以使用。
2、添加安全组规则-demo
每个项目都可以定义自己的安全组。项目>网络>安全组
默认有一个“default”的安全组,单击“管理规则”:先俩规则允许关联该默认安全组的虚拟机实例访问外部网络;后两条规则不允许从外部网络访问关联该默认安全组的虚拟机实例,但是关联该默认安全组的虚拟机实例之间可相互访问。
后续实验要允许外部网络中通过SSH协议访问虚拟机实例,使用ping工具测试虚拟机实例的连通性,添加两个安全组规则:
3、添加密钥对-demo
密钥对是虚拟机实例启动时被注入镜像的SSH凭证,每个项目可以定义自己的密钥对。项目>计算>密钥对。
创建新的密钥对时需要注册公钥并提供私钥文件(.pem格式)下载。注意保管。
4、创建虚拟机实例-demo
项目>计算>实例:显示当前实例列表。
- 第一步:为实例命名,并设置实例的数量(默认为1)
- 第二步:为实例设置源(用来创建实例的模板)。这里以镜像作为实例的源。将“删除实例时删除卷”设置为“是”。
- 第三步:由于所用的镜像很小,这里选择分配系统资源最少的“m1.tiny”实例类型。
- 第四步:默认网络类型即可
- 第五步:默认
- 第六步:默认
- 第七步:参照上述步骤,在基于Fedora操作系统镜像创建一个虚拟机实例。注意存储卷大小为1GB,这里该为10GB以满足组Fedora操作系统运行的需要(不能仅看镜像文件的大小),在用可用的镜像列表中选择“fedora”镜像。实例类型至少选择“m1.small”
3、在虚拟机实例上进行简单的操作
- 切换到“控制台”可以对该实例进行交互操作。
- 进入Fedora-VM实例的控制台进行测试。
- 进入Cirros-VM实例使用ping工具测试与Fedora-VM的连通性。
三、实现虚拟机与外部网络的通信
1、了解OpenStack的虚拟网络
2、掌握外部网络和路由器的基本配置
1、将OpenStack主机网卡添加到br-ex网桥
# 查看本机IP地址
[root@node-a ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:cb:04:e6 brd ff:ff:ff:ff:ff:ff
inet 192.168.241.10/24 brd 192.168.241.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fecb:4e6/64 scope link
valid_lft forever preferred_lft forever
6: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 2e:1f:51:41:d0:46 brd ff:ff:ff:ff:ff:ff
inet 172.24.4.1/24 scope global br-ex
valid_lft forever preferred_lft forever
inet6 fe80::2c1f:51ff:fe41:d046/64 scope link
valid_lft forever preferred_lft forever
7: br-int: <BROADCAST,MULTICAST> mtu 1442 qdisc noop state DOWN group default qlen 1000
link/ether 22:36:36:4b:33:4c brd ff:ff:ff:ff:ff:ff
[root@node-a ~]# ovs-vsctl list-br
br-ex #外部网桥
br-int #集成网桥
#查看网桥的端口
[root@node-a ~]# ovs-vsctl list-ports br-ex
patch-provnet-f72fc90f-cc54-4f75-9f54-43664d452b26-to-br-int
# 修改网络配置文件
[root@node-a ~]# cd /etc/sysconfig/network-scripts
[root@node-a network-scripts]# cp ifcfg-ens33 ifcfg-br-ex
[root@node-a network-scripts]# ls
ifcfg-br-ex ifdown-Team ifdown-ib ifdown-ovs ifdown-sit ifup-TeamPort ifup-ib ifup-ovs ifup-ppp ifup-wireless
ifcfg-ens33 ifdown-TeamPort ifdown-ippp ifdown-post ifdown-tunnel ifup-aliases ifup-ippp ifup-plip ifup-routes init.ipv6-global
ifcfg-lo ifdown-bnep ifdown-ipv6 ifdown-ppp ifup ifup-bnep ifup-ipv6 ifup-plusb ifup-sit network-functions
ifdown ifdown-eth ifdown-isdn ifdown-routes ifup-Team ifup-eth ifup-isdn ifup-post ifup-tunnel network-functions-ipv6
[root@node-a network-scripts]# vi ifcfg-br-ex
# 主要修改TYPE为OVSBridge,将DEVICETYPE修改为ovs,将NAME和DEVICE修改为br-ex
[root@node-a network-scripts]# cat ifcfg-br-ex
TYPE=OVSBridge
DEVICETYPE=ovs
BOOTPROTO=none
NAME=br-ex
DEVICE=br-ex
ONBOOT=yes
IPADDR=192.168.241.10
NETMASK=255.255.255.0
GATEWAY=192.168.241.86
DNS1=8.8.8.8
# 修改ens33配置文件,主要将TYPE修改为OVSPort,并添加最后两行定义
[root@node-a network-scripts]# vi ifcfg-ens33
[root@node-a network-scripts]# cat ifcfg-ens33
TYPE=OVSPort
NAME=ens33
DEVICE=ens33
ONBOOT=yes
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
# 重启network服务使修改生效
[root@node-a network-scripts]# systemctl restart network
# 外部网桥br-ex获得原ens33网卡的IP配置,而ens33网卡作为该网桥上的一个端口后,可以没有IP地址
[root@node-a network-scripts]# ip a
...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UP group default qlen 1000
link/ether 00:0c:29:cb:04:e6 brd ff:ff:ff:ff:ff:ff
inet6 fe80::20c:29ff:fecb:4e6/64 scope link
valid_lft forever preferred_lft forever
link/ether 4a:20:80:5a:03:52 brd ff:ff:ff:ff:ff:ff
11: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 00:0c:29:cb:04:e6 brd ff:ff:ff:ff:ff:ff
inet 192.168.241.10/24 brd 192.168.241.255 scope global br-ex
valid_lft forever preferred_lft forever
inet6 fe80::b7:e5ff:fefe:434b/64 scope link
valid_lft forever preferred_lft forever
...
2、调整网络配置-admin
- 清除现有路由器的网关:将外部网关类型的接口删除
- 删除外部网络现有的子网
- 设置同名子网基本信息
- 设置子网详情
- 为外部网络新创建的子网
- demo项目默认的路由器
- 为路由设置网关:以demo用户登录。为该项目的虚拟机的实例提供内外网通信支持
- 为路由增加接口
3、熟悉虚拟机实例的浮动IP地址分配
- 管理浮动IP的关联:以demo用户为例查看cirros的
- 已分配一个浮动IP
- 两个实例都分配有浮动IP地址
- 从虚拟机实例上访问外部网络
- 从外部网络访问虚拟机实例
4、学会通过SSH从外部网络访问虚拟机实例
- 测试SSH密码登录
[root@node-a network-scripts]# ssh [email protected]
The authenticity of host '192.168.241.80 (192.168.241.80)' can't be established.
ECDSA key fingerprint is SHA256:ZPcFAfVbq/qns2ozvNqj/vDe9Ye4/6DIzZxBdNaiqIA.
ECDSA key fingerprint is MD5:57:b2:6c:e0:06:3f:c8:8e:c7:0c:e4:d5:80:5e:2a:50.
Warning: Permanently added '192.168.241.80' (ECDSA) to the list of known hosts.
[email protected]'s password: # 默认密码为gocubsgo
$ date # 登录成功后测试
Wed Mar 20 12:43:50 UTC 2024
$ exit
Connection to 192.168.241.80 closed.
You have new mail in /var/spool/mail/root
- SSH证书登录
[root@node-a ~]# cp Downloads/demo-key.pem ~/.ssh
[root@node-a ~]# chmod 700 ~/.ssh/demo-key.pem
[root@node-a ~]# ssh -i ~/.ssh/demo-key.pem [email protected]
$ date
Tue Mar 26 04:50:37 UTC 2024
$ exit
Connection to 192.168.173.78 closed.
5、在Windows计算机上通过SSH访问虚拟机实例
这里通过PuTTY登录测试:
使用SSH证书登录要复杂些:
- 使用PuTTY的配套工具PuTTYgen将SSH私钥文件(.pem)转化为PuTTY支持的格式.ppk
- 启动PuTTY 工具,在左侧目录树展开"Connection">"SSH">"Auth">"Credentials"节点 ,选择转换好的.ppk文件。
- 在"Connection">"Data"节点,设置要发送到服务器的数据。
- 单击"Session",在"Host Name(or IP address)"文本框输入要连接的虚拟机实例。
- 单击open,会直接登录虚拟机实例
6、为虚拟机实例设置用户账号和密码
多数Openstack预置镜像文件不提供用户名和密码,可以通过SSH证书登录来解决此问题。
执行以下命令在OpenStack主机上通过SSH证书登录基于Fedora操作系统镜像(登录用户名为fedora)的Fedora-VM虚拟机实例,连接建立后可以修改root账户密码。
[root@node-a ~]# ssh -i ~/.ssh/demo-key.pem [email protected]
The authenticity of host '192.168.173.66 (192.168.173.66)' can't be established.
ECDSA key fingerprint is SHA256:q8bB/gQHlzPcC9A2H9U2zUVzQTcln1h/oBwntiPMcyg.
ECDSA key fingerprint is MD5:66:ca:9b:65:6f:e5:47:c6:e4:e7:08:0e:e6:e4:4c:f4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.173.66' (ECDSA) to the list of known hosts.
[fedora@fedora-vm ~]$ sudo passwd root # 修改root账户密码
Changing password for user root.
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.
[fedora@fedora-vm ~]$ exit
logout
Connection to 192.168.173.66 closed.
[root@node-a ~]#
接下来在控制台用root账号密码登录Fedora-VM虚拟机实例