1、openstack架构
(1)openstack是一种SOA架构(微服务就是从这种架构中剥离出来的)
(2)这种SOA架构,就是把每个服务独立成一个组件,每个组件通过定义好的api接口进行互通
(3)glance组件:可以为云主机提供镜像,镜像可以存放在S3、SAN、glaster、NFS、Ckeph、Swift等存储中。glance可从这些存储中加载给云主机使用
(4)Cinder组件:为云主机提供硬盘的,存放的操作系统
(5)Neutron组件:为云主机提供网络资源的
(6)Cellometer组件:提供计费服务(例如,创建的浮动IP,使用的镜像,进行收费)
(7)Keystone组件:提供身份认证服务(每个组件都有对应的账户和密码,通过账号和密码进行对接数据库,在应答文件中有组件的用户名和密码。而Keystone就是负责管控每个组件的账号和密码)
(8)Nova组件:负责维护和管理云环境的计算资源
(9)openstack里面有很多大组件:Nova/glance/cinder,每个大组件下面还有很多小组件,如Nova(nova-api/nova-scheduler/nova-compute/nova-conductor等)
(10)在控制节点中有nova-api(接受cpu和内存的请求),cinder-api(接受硬盘分配),glance-api(加载镜像)
(11)再通过nova-scheduler的计算调度服务(根据一系列的计算操作,看内存、磁盘等的占用比,来得出权重,在权重高的上面创建。),把请求发送给计算节点,每个计算节点都有nova-compute,通过nova-compute创建云主机
(12)openstack比较复杂,出了问题,无法根据经验来判断,要学会看日志。openstack的所有配置文件都在/etc/nova /etc/glance /etc/neutron等。openstack的所有日志文件都在/var/log/nova /var/log/glance /var/log/cinder /var/log/neutron等
(13)为了让日志显示的更全面,开启debug
(14)由于nova-scheduler是自己来断定,云主机该发放在哪台主机上。如果不想让nova-scheduler自己判定,自己可以创建一个域(也就是主机集合),平分nova域的主机
(15)nova-conductor是nova各个服务与数据库的中间件。如果所有服务都通过nova-conductor直接访问数据库就会导致并发量太大,而且还不安全(对于数据库,当然是访问的越少越安全),所以RabbitMQ消息队列(一秒可以处理几十万条数据)就是解决了并发量问题、以及数据库安全问题。
(16)openstack中都是NOVNC这种远程登录桌面,所谓的novnc是不需要单独安装VNC的客户端,并不是不需要VNC,这个直接嵌入在网页中了
(17)VNC客户端依靠的是VNCserver,在所访问的主机上(controller或compute,通过virsh list查看,若在controller上由5台云主机,则监听5900端口依次到5904端口。以此类推,在compute上也一样 )