Please enable JavaScript.
Coggle requires JavaScript to display documents.
OpenStack (:warning:生产中的坑 (:four:IP绑定 (:explode:public,internal等都要注意), …
OpenStack
-
:explode:开源的云计算管理平台
-
:moneybag:管理Network(Neutron),Compute(Nova)和Storage
-
-
-
:warning:生产中的坑
-
-
-
:four:IP绑定
:explode:public,internal等都要注意
-
-
-
:moneybag:SOA架构
:one:松耦合
:explode:不同组件之间通过消息队列来连接,如果你要什么,找我要就行了
:star:一个组件挂了没有关系,重用性高,一个组件可以扩展
-
:star:SOA服务用消息队列进行通信,消费者和生产者
:moneybag:服务记录
:explode:我不知glance服务在哪里,所以就设计服务的注册中心(OpenStack中就是keystone),记录服务和对应的主机关系
:moneybag:模块
:one:keystone
:heavy_dollar_sign:应用
-
:two:服务目录
:explode:提供一个服务目录(服务的注册中心),包括所有服务项与相关API的端点
:moneybag:术语
-
-
:three:token令牌
:explode:类似于开房时给一个房卡,这个房卡就是token.在身份验证后可以利用这个token做事
-
:four:Role角色
:explode:权限的集合,如Admin(最大的权限)
-
:six:Endpoint端点
:explode:服务和Endpoint相关联,通过Endpoint的时候就可以访问对应服务的主机
-
:three:Nova
-
:moneybag:服务
-
:two:SCheduler
-
:moneybag:调度
-
-
:bulb:我要找一个男生代表.那么先过滤掉不是男生的,其次从男生中选择成绩最优秀的
:bulb:如果用KVM的话直接创建一个虚拟机,但是OpenStack可以进行调度
:four:neutron
:one:网络
-
:moneybag:参数
-
:two:网络提供者
:explode:提供网络的可以是物理网络,然后对应provider,而provider在linuxbridge里面绑定了物理网卡
-
:three:网络类型
:one:flat(单一扁平网络)
:explode:单一扁平的网络,比如我是56.11,而它是56.12,那么新的虚拟机直接在56.0和我相同的网段里产生,如56.101
:moneybag:新的虚拟机如果要连网的话,是要连上交换机的
:!:在controller节点上,ip地址从原来的eth0移动到了brq8846d656-c1
:moneybag:brq8846d656-c1
:explode:是一个网桥,可以理解为小交换机,和我们的eth0连接上的,所以所有连接到这个网桥的都能和eth0连通
:pencil2:在controller节点上查看网桥,brctl show
-
:two:和tap2015cc93-59
连通
:explode:虚拟机的网卡,用ifconfig
可以看到它的MAC地址!=compute节点上的xml的MAC地址
:warning:如果创建不了网桥,可能controller节点是dhcp分配的.controller一定要静态分配IP地址才行
-
-
:two:DHCP-AGENT
-
:two:dhcp_driver
:explode:dhcp可以有好多,默认是dnsmasq
-
-
-
:six:Cinder
-
:moneybag:云硬盘
:explode:我们创建好cinder后,在dashboard里面可以给云主机挂载/卸载云硬盘
:moneybag:使用
:explode:如果云主机挂载了新的磁盘,那么通过fdisk -l
可以查看到,比如说为/dev/sdb
,然后分区,格式化,挂载,正常使用
:moneybag:卸载
:warning:先在云主机上取消挂载(umount
),之后再在dashboard上卸载磁盘=>之后这个磁盘可以用在其他地方
:moneybag:计算节点
:star:通过libvirt管理kvm,kvm来做计算处理
-
:moneybag:安全
:one:DDOS
:maple_leaf:解决
-
:two:当攻击流量超过机房阈值的时候,机房会封你的IP.将路由指向到运营商,运营商来封
-
-
-
-
:explode:原理
:one:创建出来的实例
:moneybag:存储路径
-
:one:id=>虚拟机的目录
-
:two:disk
:explode:大小比镜像大小小,用file命令查看,发现这是qcow格式的镜像文件并且还有后半部分文件,然后qemu-img info disk
发现虚拟大小是1G(创建虚拟机的时候指定的).
:moneybag:backing file
:explode:qcow2为copy on write,写操作时才放过去=>节省空间
-
-
:two:_base
:moneybag:第一次创建镜像文件时慢
:explode:第一次创建时需要把backing file放到nova-compute节点的instances/_base
目录下,所以会慢
-
-
:three:locks
目录=>lock文件
:explode:和mysql的lock文件一样,都是防止重复运行
:moneybag:创建1个实例
:explode:原理
:one:keystone认证阶段
:two:keystone验证登录信息,给用户一个auth_token
-
:four:nova-api说好的,不过要先去keystone那里验证一下auth_token是不是有效的
-
:two:nova内部组件间的交互
:two:nova-scheduler知道后分配节点,找到compute节点,同时写数据到数据库里
:one:nova-api验证token成功后,就写入信息到数据库里面,然后发送请求到消息队列中
:three:nova-compute请求资源
:two:glance说可以给镜像,不过要从keystone那里验证下你的token
:three:nova-compute拿到镜像后,说我要网络,于是找neutron,然后同理neutron也要验证下token
:four:nova-compute拿到网络后,说要磁盘,于是同理找Cinder
:one:nova-compute知道要创建实例后,说我要一个镜像,去请求glance
:four:nova-compute创建虚拟机
:one:最后nova-compute数据都有了,形成了xml文件.通过libvirt管理kvm,让kvm去创建虚拟机了
:fast_forward:原理图(quantum是neutron以前的名字)
:star:特点
:one:虚拟机的体积:20G,没有swap,挂个50-100G磁盘
-
:two:支持热迁移,不基于共享存储,基于volume迁移
-
-