一、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

openstack-修改管理员密码与创建外部网路_第1张图片

export OS_PASSWORD后面就是默认密码,后进入dashboard界面登陆

openstack-修改管理员密码与创建外部网路_第2张图片

登陆进去后,可以在设置修改管理员密码

openstack-修改管理员密码与创建外部网路_第3张图片

完成后,同时要修改 keystonerc_admin文件中export OS_PASSWORD后密码,然后按照如下命令配置生效

source keystonerc_admin     #重新加载

注意,admin用户是管理员,可以拥有整个资源的权限,默认分配到admin的项目组中,所以在管理界面修改完成管理员密码后必须修改keystonetc_admin的文件的中的密码,不然会导致其他组件服务认证失败


三、创建项目与用户

3.1创建项目


 首先创建一个项目,在身份管理中点击项目

openstack-修改管理员密码与创建外部网路_第4张图片

创建项目名称为test-cloud,域信息和域ID因为是测试环境,都保持默认

openstack-修改管理员密码与创建外部网路_第5张图片



项目成员为登陆云服务的租户名称,可以后期添加,目前保持默认,配额是限制该项目资源的使用,测试环境下保持默认即可

openstack-修改管理员密码与创建外部网路_第6张图片

点击完成创建,即可创建好项目test_cloud,可以作为vdc(虚拟数据中心)提供给租户使用


3.2创建用户


    为test_cloud创建一个管理员,负责分配资源,名称为vdc_admin。在身份验证-用户中创建,如下所示:

openstack-修改管理员密码与创建外部网路_第7张图片


说明:

1、选择项目test_cloud代表使用此资源

2、选择角色_member_


然后再以vdc_admin登陆openstack,可以看到可获取的资源的明显不同

openstack-修改管理员密码与创建外部网路_第8张图片


四、创建外部网络

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 的时候,意味着它属于某个子


逻辑概念如下图所示:

openstack-修改管理员密码与创建外部网路_第9张图片


大致架构如下:(VLAN模式)

openstack-修改管理员密码与创建外部网路_第10张图片


由于本次采用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


openstack-修改管理员密码与创建外部网路_第11张图片


然后修改/etc/sysconfig/network-scripts/ifcfg-ens192

DEVICE=ens192
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes

openstack-修改管理员密码与创建外部网路_第12张图片


完成修改保存后,重启网络服务

systemctl restart network

现在,使用Neutron创建外部网络。

. keystonerc_admin
neutron net-create external_network --provider:network_type flat --provider:physical_network extnet  --router:external

openstack-修改管理员密码与创建外部网路_第13张图片

然后我们就可以在openstack dashbord中看到创建好的外部网路

openstack-修改管理员密码与创建外部网路_第14张图片


4.2 配置子网

    使用之间创建好的vdc_admin登陆,开始创建网络,名称为public

openstack-修改管理员密码与创建外部网路_第15张图片

然后定义子网private_network网段为分配私网网段,192.168.1.0/24

openstack-修改管理员密码与创建外部网路_第16张图片


下一步,定义子网dhcp地址范围和dns信息,这里不用添加主机路由



openstack-修改管理员密码与创建外部网路_第17张图片


完成私网网络配置后,还需要配置一个路由器,虚拟机实例分配到私网地址后,通过该路由器进行snat到exernal网络,再到外部物理网络


openstack-修改管理员密码与创建外部网路_第18张图片

然后点击新建的路由器router,添加接口

openstack-修改管理员密码与创建外部网路_第19张图片

此时就完成了路由器的添加。

此时查看网络拓扑,如下所示:

openstack-修改管理员密码与创建外部网路_第20张图片


可以看,虚拟网络public已经通过虚拟机路由器与外部网络是连通的了

配置完成,可以再命令行中验证创建的网络情况

openstack-修改管理员密码与创建外部网路_第21张图片