如何借助OpenStack命令行工具管理虚拟机

如何借助OpenStack命令行工具管理虚拟机,第1张

 OpenStack中有两种不同的界面用来管理云资源。一个是通过Horizon,这是基于Web的OpenStack仪表板;另一个就是通过OpenStack命令行接口(CLI)。

我在本教程中将演示如何从命令行,在OpenStack上创建或终止虚拟机。这个过程是在Havana版本的OpenStack中进行测试的。至于像OpenStack Folsom这些早期的OpenStack版本,你只要将本教程所用的命令行中的“neutron”换成“quantum”即可。

姑且假设部署的一套OpenStack系统已在某处构建并运行起来。我要使用OpenStack CLI客户程序,在现有的OpenStack系统上管理虚拟机。

安装OpenStack CLI客户程序

第一步就是安装必要的OpenStack命令行客户程序:

在Debian、Ubuntu或Linux Mint上,执行这个命令:

$ sudo apt-get install python-pip $ sudo pip install python-novaclient python-keystoneclient python-neutronclient

在CentOS、Fedora或RHEL上,执行这个命令:

$ sudo yum install python-pip $ sudo pip install python-novaclient python-keystoneclient python-neutronclient

设定环境变量

为了能够使用OpenStack CLI客户程序,你就要设定必要的环境变量。为此,创建一个名为openrcsh的脚本,如下所示。

$ sudo vi openrcsh export OS_USERNAME=dan export OS_PASSWORD=my_password export OS_TENANT_NAME=demo export OS_AUTH_URL=>

>

1分层设计

SaaS系统分层大概是:

租户识别>应用层>数据访问层>缓存层>数据库

业务代码都是写在应用层。

租户识别可以用spring拦截器实现,然后使用ThreadLocal传递给后端

数据库和缓存层对应用层应该是透明的。程序员在写代码的时候,只关心业务逻辑,不应该担心多租户的问题。

2数据隔离要透明

SaaS系统说起来很简单,任何系统似乎加个tenant_id(租户id)就变成SaaS系统了。比如原来的用户登录是:

select username,password from users where email='abc@qqcom' 

改成

select username,password from users where email='abc@qqcom' and tenant_id =1; 

对于复杂业务的SaaS系统,这样做法非常危险,而且开发效率很低。你想想如果那个程序员写sql时候忘了加 “ and tenant_id =1” 结果不堪设想。

比较好做法是在数据库访问层对SQL进行改写。

TenantContextexec("select username,password from users where email='abc@qqcom' "); 

在连接池根据TenatnContext改写Sql

这样做好处是,一来程序猿最多把系统搞down了,也不至于信息串了互相泄露。二来将来做分表分库也很方便,上层应用不用修改。

3 租户识别方案

比较好做法是通过url识别租户。系统是给租户生成一个随机的三级域名,比如 abccrmbaiducom 如果客户想使用自己的域名,可以在cname到我们生成的三级域名,并在管理系统里面做绑定。

这样一个租户可以有两个域名,访问SaaS,一个随机生成的三级域名,另外一个租户自己的域名代码里面可以根据过来的域名,判断是那个租户然后初始化TenantContext

如果不想通过域名来做,也可以通过登录名来判断。这种方式要涉及到租户切换问题。

4 智能DNS

(以后补充。)

5 租户管理系统(计费,订购,定制,充值,催缴)

SaaS系统是必须考虑计费系统和租户控制系统。这个系统需要都是独立设计。比如那个租户购买了那些模块,一个月多少钱。租户可以创建最多的用户数。计费到期邮件提醒等功能。

计费方式一般有两种,周期性计费,类似月租方案,和使用量计费,用多少付多少。 周期性计费比较简单。也可以两者结合起来。

6 定制化开发

SaaS的优势在于一套系统多人使用,似乎和定制化开发有冲突。比如A客户想要A功能,B客户不想要。但定制化开发是无法避免的,比如CRM系统这样复杂的系统,不可能一套系统满足所有公司的要求。定制化开发尽可能分系统,分模块去做。然后通过控制台中配置不同租户订购不同模块,那些模块可以在前端页面上显示。不同的子系统需要分开部署。前端可通过nginx根据url分发,比如 abccrmbaiducom/bi/xxx/xx这个地址,就分发到BI子系统。不要尝试OSGI去搞模块化,这个是个大坑。

还有开发和产品,现有需求一定要分析清楚,不要一上线发现后患无穷。新功能尽量做的独立可以配置。

7 灰度升级

SaaS付费企业客户对系统问题都特别敏感。 为了减少升级可能出现问题的影响范围,一般都采用灰度升级策略。如果使用了url来区分不同租户,灰度升级配置就会很方便。可以配置nginx 来根据域名做分发,比如租户A(aaacom)到实例1(版本10),租户B(bbbcom)到实例2(版本) 当需要域名配置非常多的时候,nginx配置文档会乱。这块时候可以考虑使用nignx_lua来写一些扩展模块。

8 容量估计

以上就是关于如何借助OpenStack命令行工具管理虚拟机全部的内容,包括:如何借助OpenStack命令行工具管理虚拟机、怎样修改 Openstack Horizon的显示界面、求收个华硕68U路由器的包装盒和说明书,价钱好商量。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9337322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存