基于OpenStack的私有云平台的设计与实现
基于OpenStack的私有云平台的设计与实现
1. 写在前面
本系列博客主要讲解如何部署OpenStack,并在OpenStack的基础上实现高可用和集群。
问题1:什么是OpenStack?
OpenStack是实现云计算的一个项目,使用python语言开发,简言之,OpenStack类似于阿里云,使用OpenStack创建的云主机类似于在阿里云购买的服务器。
问题2:什么是高可用?
如果使用单个云主机作为服务器向外提供服务,当这台云主机死机的话,系统将完全瘫痪,简言之,系统的可用性很低,高可用实现了当一台云主机死机后,其他云主机继续向外提供服务
问题3:什么是集群?
大家都有在双十一购物的经历,全球几亿人在同一时间请求阿里巴巴的服务器,如果说阿里巴巴只有一台服务器的话,肯定无法在同一时刻响应几亿人的请求,所以后台肯定有无数的服务器共同完成客户端的请求,所有的服务器平摊所有的客户端请求,最终使得每个服务器收到的请求在其能处理的范围,集群即为多台服务器共同完成客户端请求。
2. 系统介绍
客户端IP:172.16.0.1
虚拟IP - vip:172.16.0.136
master1(LVS_Keepalived_Master):172.16.0.131
master2(LVS_Keepalived_Backup):172.16.0.132
server1(Real_Server1):172.16.0.133
server2(Real_Server2):172.16.0.134
storage(DB):172.16.0.135
本系统是在Virtual Box的基础上部署OpenStack,使用的OpenStack Fuel自动化部署,部署过程比较简单,曾经尝试过手动部署,但是部署一直失败,现在分析原因,主要是电脑的运行内存太低,无法提供OpenStack足够的内存,所以导致部署失败!
客户端通过虚拟IP请求调度机master1和master2,调度机将客户端的请求发送给后面的真实服务器Server1和Server2,调度机只是起到了一个将客户端请求按照一定算法分配给后端服务器的功能,真实服务器才是真正响应客户请求的服务器,两台真实服务器使用MySQL主主同步实现数据库的同步。
本系统如何体现高可用?
高可用体现在系统任意一台云主机死机,系统可以正常运行。
本系统如何体现集群?
集群体现在客户端的请求会按照真实服务器的负荷情况分配给两台真实服务器。
实现过程中遇到的问题
a. 使用OpenStack部署的云主机无法访问外网。
解决:物理机的真实网卡和虚拟机的虚拟网卡172.16.0.1进行网络共享
b. 客户端无法访问虚拟IP
解决:使用OpenStack的allowed_address_pairs属性
参考:
c. 实现集群时,客户端无法连接真实服务器。
解决:由于OpenStack内部有防DOS攻击的机制,所以会拦截客户端的请求,解决过程是使用LVS的tunnel部署机制来实现集群,可以避免OpenStack内部的防DOS攻击机制。