Apr 292014
 

Openstack的网络,估计讲课讲好几天都讲不完。新版本的Icehouse在Neutron变化也很大,需要很多时间去理解。我一般的做法是去slideshare下载几个ppt,学习一下。

在Icehouse Neutron引入了ML2插件,这个需要我们重点关注一下。

下面的截图是来自两个PPT,slideshare都可以下载,我放到我的网盘里。

http://yunpan.cn/QNzCM9PxWjVw5 访问密码 88bb

http://yunpan.cn/QNzCEnUsMDsqq 访问密码 d265

redhat出品 http://assafmuller.files.wordpress.com/2014/05/neutron.pdf

Continue reading »

Apr 252014
 

一个月前就把车提回来,熟悉了1一个月,也该整理一下。这个时候,相对来说,对车的认识,客观不少。

美国车,其实和我熟悉的日,韩系车,有很多不同的地方,最明显的地方,就是手刹,雨刮,开灯的位置都不一样。

Continue reading »

Apr 232014
 

上周Icehouse就已经发布,Redhat还没正式宣布Icehouse的包发布,不过也已经基本准备好,我就动手安装一下,这个和Havana版本,还是有点区别。

  1. 消息队列默认已经改成Rabbitmq
  2. 使用ML2插件,代替ovs和linux bridge插件,应答文件需要调整(在I版本,你还是可以使用ovs插件,不过到下一个版本,代码就会移掉,所以提前了解ML2插件)

这个例子,是单节点,对于RDO来说,多节点,并没有太多的区别。

2014年4月24日:目前我安装完后进行测试,发现很多问题,无法创建项目和创建虚拟机。

2014年5月14日:Redhat发布icehouse的beta版本,终于可以顺利完成安装。

2014年6月17日:采用多节点来测试,一个控制节点+2个计算节点。网络是安装在控制节点上。

设置源

RDO需要使用epel源和RDO源,另外由于epel上的puppet版本太旧,所以需要增加puppet的源,Foreman的源,其实我们是用不上。

需要注意的一点就是,如果你是多节点的安装,那么你确保你的其他节点的epel源设置正确就可以,默认packstack不会设置其他节点的epel源。

我试验环境有内网的源,其实是不需要这个的。这个rpm包装完,你会发现 /etc/yum.repos.d/ 目录下多几个文件。

yum install -y http://rdo.fedorapeople.org/openstack-icehouse/rdo-release-icehouse.rpm

网卡配置

默认我使用eth0作为公网IP地址,虚拟机的floating IP,也是公网的IP地址,eth1,作为虚拟机通讯,需要设置一个私有的IP地址段就可以,这个IP地址段,和虚拟机获得的fix IP,没有任何联系。

cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
HWADDR=00:E0:81:D8:43:BE
TYPE=Ethernet
BOOTPROTO=none
IPADDR=172.28.1.133
NETMASK=255.255.0.0
DNS1=172.28.0.1

eth1,是一个虚拟机通讯的网络,所以你设置一个专用的私有IP地址段就可以,这个是GRE网络需要的

cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
HWADDR=00:E0:81:D8:43:BF
TYPE=Ethernet
BOOTPROTO=none
IPADDR=10.1.1.133
NETMASK=255.255.255.0
DNS1=172.28.0.1

 

 

安装packstack

yum -y install openstack-packstack
packstack --gen-answer-file=node133.txt

 

修改应答文件

默认的应答文件有点变化,所以需要调整一下

CONFIG_HEAT_INSTALL=y
CONFIG_KEYSTONE_ADMIN_PW=admin
#CONFIG_NEUTRON_L2_PLUGIN=openvswitch
CONFIG_NEUTRON_L2_PLUGIN=ml2
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=gre
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=gre
CONFIG_NEUTRON_ML2_TUNNEL_ID_RANGES=100:1000
CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE=gre
CONFIG_NEUTRON_OVS_TUNNEL_RANGES=100:1000
CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1

#########
CONFIG_HEAT_CLOUDWATCH_INSTALL=y
CONFIG_HEAT_CFN_INSTALL=y

 

在我的实际的环境中,我还做下面的调整

CONFIG_SSH_KEY=/root/.ssh/authorized_keys
CONFIG_NTP_SERVERS=172.28.0.1
CONFIG_PROVISION_DEMO=n
CONFIG_CINDER_VOLUMES_CREATE=n

 

做这些调整的目的

  • 使用密钥,可以免除输入密码,这样方便多节点部署
  • 让所有的机器同步时间,避免不必要的麻烦
  • 不创建demo用户,这样可以避免很多误解
  • 用文件模拟cinder volume,性能很差,我的机器里已经有一个lvm 卷 cinder-volumes, 所以不需要文件模拟

运行packstack

这就是安装

packstack --answer-file=node133.txt

顺利装完后,你会看到

 **** Installation completed successfully ******


Additional information:
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
 * File /root/keystonerc_admin has been created on OpenStack client host 172.28.1.133. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://172.28.1.133/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * To use Nagios, browse to http://172.28.1.133/nagios username : nagiosadmin, password : nagiosadmin
 * The installation log file is available at: /var/tmp/packstack/20140617-100211-nW1zwf/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20140617-100211-nW1zwf/manifests

调整网络

默认虚拟机是无法访问外网,所以我们需要设置一下。

查看当前网络情况

root@g133 ~]# ovs-vsctl show
d5211ea0-c973-4f41-a7f4-69dd0cf7238c
    Bridge br-int
        Port br-int
            Interface br-int
                type: internal
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
    Bridge br-tun
        Port patch-int
            Interface patch-int
                type: patch
                options: {peer=patch-tun}
        Port "gre-0a01010a"
            Interface "gre-0a01010a"
                type: gre
                options: {in_key=flow, local_ip="10.1.1.133", out_key=flow, remote_ip="10.1.1.10"}
        Port br-tun
            Interface br-tun
                type: internal
        Port "gre-0a01010c"
            Interface "gre-0a01010c"
                type: gre
                options: {in_key=flow, local_ip="10.1.1.133", out_key=flow, remote_ip="10.1.1.12"}
    ovs_version: "1.11.0"

没有创建br-ex

我们需要创建 /etc/sysconfig/network-scripts/ifcfg-br-ex

# cat /etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE=br-ex
IPADDR=172.28.1.133
PREFIX=16
ONBOOT=yes

调整eth0

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
HWADDR=00:E0:81:DE:23:65

创建bridge br-ex

ovs-vsctl add-br br-ex

这个时候查看网络

# ovs-vsctl show
3a0b7e02-78a1-475e-bc93-5b57a6749aa3
    Bridge br-tun
        Port patch-int
            Interface patch-int
                type: patch
                options: {peer=patch-tun}
        Port br-tun
            Interface br-tun
                type: internal
        Port "gre-0a01010a"
            Interface "gre-0a01010a"
                type: gre
                options: {in_key=flow, local_ip="10.1.1.133", out_key=flow, remote_ip="10.1.1.10"}
        Port "gre-0a01010c"
            Interface "gre-0a01010c"
                type: gre
                options: {in_key=flow, local_ip="10.1.1.133", out_key=flow, remote_ip="10.1.1.12"}
    Bridge br-int
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
        Port br-int
            Interface br-int
                type: internal
    Bridge br-ex
        Port br-ex
            Interface br-ex
                type: internal
    ovs_version: "1.11.0"

把bridge和网卡绑定

ovs-vsctl add-port br-ex eth0; service network restart

这个时候,你再查看网络

# ovs-vsctl show
3a0b7e02-78a1-475e-bc93-5b57a6749aa3
    Bridge br-tun
        Port patch-int
            Interface patch-int
                type: patch
                options: {peer=patch-tun}
        Port br-tun
            Interface br-tun
                type: internal
        Port "gre-0a01010a"
            Interface "gre-0a01010a"
                type: gre
                options: {in_key=flow, local_ip="10.1.1.133", out_key=flow, remote_ip="10.1.1.10"}
        Port "gre-0a01010c"
            Interface "gre-0a01010c"
                type: gre
                options: {in_key=flow, local_ip="10.1.1.133", out_key=flow, remote_ip="10.1.1.12"}
    Bridge br-int
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
        Port br-int
            Interface br-int
                type: internal
    Bridge br-ex
        Port "eth0"
            Interface "eth0"
        Port br-ex
            Interface br-ex
                type: internal
    ovs_version: "1.11.0"

比较这几个,应该可以看到变化.

 

 

参考文档


https://bugzilla.redhat.com/show_bug.cgi?id=1068962

https://bugzilla.redhat.com/show_bug.cgi?id=1066519

Apr 222014
 

应该是在2010年的时候,虚拟机的磁盘大小是由虚拟机的模板决定,这个就比较痛苦,如果你希望提供多种磁盘格式,那么你就需要搞多个镜像。

还有一种做法,就是固定磁盘大小,操作系统是20G,你可以通过增加磁盘,不能调整硬盘大小。硬盘调整是有风险的,很有可能造成数据丢失。

不过当时在国外,linode和Rackspace,都已经实现磁盘的大小是根据创建的时候选择的硬盘大小。那么这个如何实现的呢。

可以猜测到,肯定是虚拟机启动后,运行的磁盘调整的工具,实现分区扩大,具体如何实现,我们就无从知道。

Openstack上,实现了这个功能,虚拟机的大小是由Flovor来决定,那么我就好好研究一下,这个分区调整是如何实现的。

对于linux的虚拟机镜像的分区,大家有不同的看法。目前我看到的反馈就是

  1. 不需要swap分区
  2. lvm分区没太多意义
  3. 就一个 根分区 / 就可以

要想实现分区扩大,其实需要做的工作是很多的,大家会发现,自己做的镜像,分区是无法调整的。而Ubuntu官方的镜像是可以调整的。而且如果你是多个分区,那么他的扩大的分区,其实是根分区。

Continue reading »

Apr 042014
 

这是我的第一辆车,其实还是非常有感情的。其实我都不好意思告诉别人,我是学汽车维修的,从大学毕业,就一直希望有一辆自己的车,这样开起来就很放心。这个想法,整整过了15年才实现。

也该做一个总结,福瑞迪已经开了两年,那么很多结论应该也比较中肯。

很多人据说可以通过试驾,或者查看各种评测报告来选车,其实我是不太相信这样的说法。试驾那几公里,估计也啥都感觉不出来,一辆车,好和坏,真的是需要长时间才能评估出来。

经过2年的使用,我的感觉就是韩系的车做的质量其实已经是很不错,如果你是第一次买车,或者只是用来代步,那么我认为是非常合适的。

Continue reading »

Apr 022014
 

目前Redhat的RDO,packstack的bug还是很多,rpm包的更新比较慢,所以你遇到的bug,很可能在trunk里已经更新,所以,你可以直接用packstack的源码来安装。

设置源

我的实验环境,其实已经配置后源。

yum install -y http://rdo.fedorapeople.org/openstack-icehouse/rdo-release-icehouse.rpm

安装packstack

yum install -y python-netaddr python-setuptools git
git clone git://github.com/stackforge/packstack
cd packstack
python setup.py install_puppet_modules
./bin/packstack --gen-answer-file=node12.txt

剩下的就是设置应答文件