一、keystone服务概念
Keystone被组织为在一个或多个端点上公开的一组内部服务。其中许多服务由前端以组合方式使用。例如,身份验证调用将使用Identity服务验证用户/项目凭据,并在成功时创建并返回带有令牌服务的令牌。
Identity服务提供身份验证凭据验证以及有关用户 和组的数据。在基本情况下,此数据由Identity服务管理,允许它还处理与此数据关联的所有CRUD操作。在更复杂的情况下,数据由权威后端服务管理。例如,身份服务充当LDAP的前端。在这种情况下,LDAP服务器是真实的来源,身份服务的作用是准确地传递该信息。
Users表示单个API使用者。用户本身必须由特定域拥有,因此所有用户名不是全局唯一的,而是仅对其域唯一。
Groups是表示用户集合的容器。组本身必须由特定域拥有,因此所有组名称不是 全局唯一的,而是仅对其域唯一。
资源服务提供有关项目和域的数据。
Projects代表ownershipOpenStack 的基本单元,因为OpenStack中的所有资源都应归特定项目所有。项目本身必须由特定域拥有,因此所有项目名称不是 全局唯一的,但对于其域是唯一的。如果未指定项目的域,则将其添加到默认域。
Domains是项目,用户和组的高级容器。每个都归一个域所有。每个域定义一个名称空间,其中存在API可见的名称属性。Keystone提供了一个默认域名,名称为“默认”。
在Identity v3 API中,属性的唯一性如下:
域名。所有领域的全球独特性。
角色名称。在拥有的域内独一无二。
用户名。在拥有的域内独一无二。
项目名。在拥有的域内独一无二。
团队名字。在拥有的域内独一无二。
由于其容器架构,域可以用作委派OpenStack资源管理的方式。如果授予适当的分配,则域中的用户仍可以访问另一个域中的资源。
Assignment服务提供有关角色和角色分配的数据。
Roles规定最终用户可以获得的授权级别。角色可以在域或项目级别授予。可以在单个用户或组级别分配角色。角色名称在拥有域中是唯一的。
一个3元组,有一个Role,一个Resource和一个Identity。
一旦用户的凭证已经过验证,令牌服务就会验证和管理用于验证请求的令牌。
二、登陆并修改openstack管理员密码
在完成openstack搭建后,按照http://serverip/dashboard/ 登陆,登陆提示会需要admin管理员账户密码。默认密码保存在keystonerc_admin 文件
cat keystonerc_admin
export OS_PASSWORD后面就是默认密码,后进入dashboard界面登陆
登陆进去后,可以在设置修改管理员密码
完成后,同时要修改 keystonerc_admin文件中export OS_PASSWORD后密码,然后按照如下命令配置生效
source keystonerc_admin #重新加载
注意,admin用户是管理员,可以拥有整个资源的权限,默认分配到admin的项目组中,所以在管理界面修改完成管理员密码后必须修改keystonetc_admin的文件的中的密码,不然会导致其他组件服务认证失败
三、创建项目与用户
3.1创建项目
首先创建一个项目,在身份管理中点击项目
创建项目名称为test-cloud,域信息和域ID因为是测试环境,都保持默认
项目成员为登陆云服务的租户名称,可以后期添加,目前保持默认,配额是限制该项目资源的使用,测试环境下保持默认即可
点击完成创建,即可创建好项目test_cloud,可以作为vdc(虚拟数据中心)提供给租户使用
3.2创建用户
为test_cloud创建一个管理员,负责分配资源,名称为vdc_admin。在身份验证-用户中创建,如下所示:
说明:
1、选择项目test_cloud代表使用此资源
2、选择角色_member_
然后再以vdc_admin登陆openstack,可以看到可获取的资源的明显不同
四、创建外部网络
4.1 openstack中网络概念
在openstack中,所有的网络服务都是由neutron实现。openstack官方对neutron中描述如下:
OpenStack网络(neutron)管理OpenStack环境中所有虚拟网络基础设施(VNI),物理网络基础设施(PNI)的接入层。OpenStack网络允许租户创建包括像 firewall, :term:`load balancer`和 :term:`virtual private network (×××)`等这样的高级虚拟网络拓扑。
网络服务提供网络,子网以及路由这些对象的抽象概念。每个抽象概念都有自己的功能,可以模拟对应的物理设备:网络包括子网,路由在不同的子网和网络间进行路由转发。
对于任意一个给定的网络都必须包含至少一个外部网络。不像其他的网络那样,外部网络不仅仅是一个定义的虚拟网络。相反,它代表了一种OpenStack安装之外的能从物理的,外部的网络访问的视图。外部网络上的IP地址可供外部网络上的任意的物理设备所访问
外部网络之外,任何 Networking 设置拥有一个或多个内部网络。这些软件定义的网络直接连接到虚拟机。仅仅在给定网络上的虚拟机,或那些在通过接口连接到相近路由的子网上的虚拟机,能直接访问连接到那个网络上的虚拟机。
如果外部网络想要访问实例或者相反实例想要访问外部网络,那么网络之间的路由就是必要的了。每一个路由都配有一个网关用于连接到外部网络,以及一个或多个连接到内部网络的接口。就像一个物理路由一样,子网可以访问同一个路由上其他子网中的机器,并且机器也可以访问路由的网关访问外部网络。
另外,你可以将外部网络的IP地址分配给内部网络的端口。不管什么时候一旦有连接连接到子网,那个连接被称作端口。你可以给实例的端口分配外部网络的IP地址。通过这种方式,外部网络上的实体可以访问实例.
neutron利用了linux重要网络技术,相关概念如下:
bridge:网桥,Linux中用于表示一个能连接不同网络设备的虚拟设备,linux中
传统实现的网桥类似一个hub设备,而ovs管理的网桥一般类似交换机。
br-int:bridge-integration,综合网桥,常用于表示实现主要内部网络功能的网
桥。
br-ex:bridge-external,外部网桥,通常表示负责跟外部网络通信的网桥。
GRE:General Routing Encapsulation,一种通过封装来实现隧道的方式。在
openstack中一般是基于L3的gre,即original pkt/GRE/IP/Ethernet
VETH:虚拟ethernet接口,通常以pair的方式出现,一端发出的网包,会被另
一端接收,可以形成两个网桥之间的通道。
qvb:neutron veth, Linux Bridge-side
qvo:neutron veth, OVS-side
TAP设备:模拟一个二层的网络设备,可以接受和发送二层网包。
TUN设备:模拟一个三层的网络设备,可以接受和发送三层网包。
iptables:Linux 上常见的实现安全策略的防火墙软件。
Vlan:虚拟 Lan,同一个物理 Lan 下用标签实现隔离,可用标号为1-4094。
VXLAN:一套利用 UDP 协议作为底层传输协议的 Overlay 实现。一般认为作
为 VLan 技术的延伸或替代者。
namespace:用来实现隔离的一套机制,不同 namespace 中的资源之间彼此
不可见。
Neutron管理下面的实体:
网络:隔离的 L2 域,可以是虚拟、逻辑或交换。
子网:隔离的 L3 域,IP 地址块。其中每个机器有一个 IP,同一个子网的主机彼此 L3 可见。
端口:网络上虚拟、逻辑或交换端口。 所有这些实体都是虚拟的,拥有自动生成的唯一标示id,支持CRUD功能,并在数据库中跟踪记录状态。
网络隔离的 L2 广播域,一般是创建它的用户所有。用户可以拥有多个网络。网络是最基础的,子网和端口都需要关联到网络上。网络上可以有多个子网。同一个网络上的主机一般可以通过交换机或路由器连通起来。
子网隔离的 L3 域,子网代表了一组分配了 IP 的虚拟机。每个子网必须有一个 CIDR 和关联到一个网络。IP 可以从 CIDR 或者用户指定池中选取。子网可能会有一个网关、一组 DNS 和主机路由。不同子网之间 L3 是互相不可见的,必须通过一个三层网关(即路由器)经过 L3 上进行通信。
端口可以进出流量的接口,往往绑定上若干 MAC 地址和 IP 地址,以进行寻址。一般为虚拟交换机上的虚拟接口。虚拟机挂载网卡到端口上,通过端口访问网络。当端口有 IP 的时候,意味着它属于某个子
逻辑概念如下图所示:
大致架构如下:(VLAN模式)
由于本次采用allinone的部署,控制节点和网络节点合并在一起,同时,测试环境下只有一个网卡。
4.2将neutron与外部网络连接
neuntron主要是通过br-ex与外部网络连接通讯
首先将/etc/sysconfig/network-scripts/ifcfg-ens192(实际情况物理网卡名称可能不同,如kvm中为eth0),复制为/etc/sysconfig/network-scripts/ifcfg-br-ex,
编辑/ etc / sysconfig / network-scripts / ifcfg-br-ex,重点修改如下内容
DEVICE=br-ex DEVICETYPE=ovs TYPE=OVSBridge BOOTPROTO=static IPADDR=172.31.208.100 # 这个ip地址就是ens01网卡的ip地址 NETMASK=255.255.255.0 GATEWAY=192.168.122.1 DNS1=192.168.122.1 ONBOOT=yes
然后修改/etc/sysconfig/network-scripts/ifcfg-ens192
DEVICE=ens192 TYPE=OVSPort DEVICETYPE=ovs OVS_BRIDGE=br-ex ONBOOT=yes
完成修改保存后,重启网络服务
systemctl restart network
现在,使用Neutron创建外部网络。
. keystonerc_admin neutron net-create external_network --provider:network_type flat --provider:physical_network extnet --router:external
然后我们就可以在openstack dashbord中看到创建好的外部网路
4.2 配置子网
使用之间创建好的vdc_admin登陆,开始创建网络,名称为public
然后定义子网private_network网段为分配私网网段,192.168.1.0/24
下一步,定义子网dhcp地址范围和dns信息,这里不用添加主机路由
完成私网网络配置后,还需要配置一个路由器,虚拟机实例分配到私网地址后,通过该路由器进行snat到exernal网络,再到外部物理网络
然后点击新建的路由器router,添加接口
此时就完成了路由器的添加。
此时查看网络拓扑,如下所示:
可以看,虚拟网络public已经通过虚拟机路由器与外部网络是连通的了
配置完成,可以再命令行中验证创建的网络情况
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。