openstack icehouse负载均衡配置

  1. 网络拓扑
    1
    其中10.0.0.0/24是服务器网络,192.168.40.0/24是负载均衡的网络,172.16.85.160/27是公网地址。三台服务器均运行tomcat服务
  2. 创建和配置负载均衡器
    (1).创建一个pool(资源池)
    打开网络-负载均衡-新增资源池
    2
    (2).设置vip
    点击新建的资源池后面的更多选项,选择添加vip
    3
    需要说明的是juno已经支持在此页面给vip绑定floating ip.
    (3).增加成员
    选择“成员”选项卡,点击“新增成员”,添加3台服务器
    4
    (4).增加监控
    选择“监控”选项卡,点击“新增监控”
    5(5).关联监控
    选择“资源池”选项卡,点击资源池后面的更多,选择“关联监控选项”,选择我们创建的监控
    6
    因为我已经关联了,所以上图显示的是解除关联
  3. 为vip绑定floating ip
    (1).输入以下命令创建一个floating ip
    neutron floatingip-create public    #pubic为外网

    7
    (2).查找vip的端口id
    点击资源池后面的vip,查看其端口id
    8
    (3).绑定floating ip
    使用以下命令绑定vip和floating ip,前面是floating ip的id,后者是vip的端口id
    neutron floatingip-associate  0b124556-38f5-4d0c-b71c-32292ebff0ee  b688d6c8-d0c6-4d49-91d4-d08fd4d2856b

    9
  4. 验证
    访问vip的floating ip会轮循到三台tomcat服务器(我在不同的服务器部署了不同的内容),如下图
    10 11 12

远程访问openstack 数据库

  1. 登录数据库 创建用户
    mysql -u root   #直接回车 空密码
    >CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin';   #创建admin用户密码为admin
    
    
  1. 修改admin权限,允许远程访问
    >use mysql;      #此DB存放MySQL的各种配置信息
    >select host,user from user;    #查看用户的权限情况

    mysql
    localhost表示只能本机访问
    执行以下命令
    >Grant all privileges on *.* to 'admin'@'%' identified by 'admin' with grant option;
    #%表示是所有的外部机器,如果指定某一台机,就将%改为相应的机器名;’root’则是指要使用的用户名
    >flush privileges;
    
    
  1. 添加iptables规则 允许3306端口
    #iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
    #iptables-save

     
  1. 使用MySQL-Front等工具远程访问数据库。

将站点从免费空间hostinger迁到万网主机遇到的一些问题

  1. 万网导入备份的数据库的时候提示 #1273 - Unknow collation: 'utf8mb4_unicode_cli'
    1
    hostinger使用的mysql版本支持utf8mb4,而万网使用的mysql版本低一些不支持,使用notepad++打开备份的sql文件,将其中的utf8mb4全部替换成utf8就可以成功导入了。
  2. 多媒体不显示以前上传的图片,上传图片也显示http错误。
    猜想可能是路径的错误,打开设置--多媒体,看到里面默认的上传路径是hostinger的绝对路径,而不是万网的。可是我改成万网主机的相对路径wp-content/uploads依旧无效,可是我也不知道万网主机的绝对路径,后来想起来WP super cache插件好像可以读到这个路径写入wp-config.php,打开wp-config.php,看到如下项:
    111
    把默认上传路径改成/data/home/xxxxxx/htdocs/wp-content/uploads 问题解决
  3. 二级域名的问题
    万网提供的免费主机似乎没有提供二级域名,可以通过万网的域名解析实现类似的功能。我有一个二级网站在根目录的iloveyou文件夹里面,当然可以通过http://www.sunmite.com/iloveyou访问,后来我在阿里云解析里面发现了一个 隐性URL的解析项看描述可以实现二级域名的效果。
    1111
    添加如下解析:
    11111
    等待DNS刷新,实现效果如下:http://iloveyou.sunmite.com
    111

OpenStack Apis Authenticate (Token ID & Tenant ID)

调用openstack api需要先发送认证请求,需要获取Token ID和Tenant ID。

使用trystack的话需要获得username,password,tenant name和认证地址等选项,获取方法如下:

1.获取api密码

登录成功后点击右上角的用户名选择设置,然后选择左侧的“API Password”,然后点击“Request API password”按钮,获取你的 Api密码,获取之后自行记住。然后你需要退出重新登录,可以直接用用户名:facebook*** 密码就是刚刚获取的登录。

[caption id="attachment_155" align="alignnone" width="692"]获取api密码 获取api密码[/caption]

2.获取认证地址,tenant name等信息

点击左侧dashboard的Compute选项中的访问和安全,选择右侧的“访问&安全”选项,然后点击“下载OpenStack RC文件”按钮,下载文件至本地。

[caption id="attachment_158" align="alignnone" width="896"]下载openstack rc文件 下载openstack rc文件[/caption]

下载完成后代开下载的文件,需要的信息已经在下图圈出。

[caption id="attachment_157" align="alignnone" width="625"]获取其他信息 获取其他信息[/caption]

 

认证获取Token ID 和 Tenant ID(其实tenant id上图的openstack RC文件中已经给出来了)

#!/usr/bin/python
#-*- coding: UTF-8 -*-  
import urllib, httplib, json, urlparse
FLOATING_IP = '8.21.28.*'                   #你的认证ip
TENANT_NAME = 'your tenant name'
USERNAME = 'your username'
PASSWD = 'your password'

url = FLOATING_IP + ':5000'
try:
    params = '{"auth": {"tenantName":"' + TENANT_NAME + '", "passwordCredentials":{"username":"' + USERNAME + '", "password":"' + PASSWD + '"}}}'
    headers = {'Content-Type': 'application/json'}
    conn = httplib.HTTPConnection(url)
    conn.request('POST','/v2.0/tokens',params,headers)
    response = conn.getresponse()
    data = response.read()
    dd = json.loads(data)
    if 'error' in dd:
        print 'Error,Openstack Authorized Failed!'
        conn.close()
        exit()
    conn.close()
    
except Exception as e:
    print url + '/v2.0/tokens', e
    conn.close()
    exit()
 
token_id = dd['access']['token']['id']
tenant_id = dd['access']['token']['tenant']['id']
print "token : " + token_id
print "tenant id : " + tenant_id