Open sfPPP opened 6 years ago
问题描述: 安装keystone 创建项目时报错 :'could not find requested endpoint in service' 执行命令openstack catalog show keystone 查看 keystone 的endpoint发现admin 的url设错了 然后执行openstack endpoint delete id(endpoints的ID )想删除这个endpoint再新建一个 但 还是报'could not find requested endpoint in service’ 最后推测这个endpoint是存在keystone 数据库的,然后 进入keystone查看endpoint表,发现url的确存在这个表,然后改这个字段的值,重启httpd,memcached,创建项目成功, 问题解决
Openstack 使用遇到的问题
1.glance-api无法启动问题 1 2.最大连接数问题 1 3.安装fwass的问题(防火墙) 2
查看某个服务启动错误日志: journalctl -u openstack-nova-compute.service|grep -i error
1.glance-api无法启动问题
ERROR: Unable to locate paste config file for glance-registry 解决办法: · vim /etc/glance/glance-registry.conf‘ 在[paste_deploy]下面加上 config_file=/usr/share/glance/glance-registry-dist-paste.ini
2.最大连接数问题 OperationalError: (pymysql.err.OperationalError) (1040, u'Too many connections') 原因:openstack服务连接数超出mysql的max_connections(在my.cnf的[mysqld]里面) 解决方法: Nova,glance,neutron等服务每个请求默认所占连接数为其CPU内核数,CPU的核数越多每个请求所占的连接数就越多 更改各个组件的配置文件里的worker属性值,可以设为3(默认worker的是CPU核数,如果是40核,默认worker数为40), Nova的 api-paste.ini nova.conf Glance的glance-api.conf ,glance-registry.conf,glance-cache.conf
Neutron的metadata_agent.ini plugin.ini dhcp_agent.ini l3_agent.ini neutron.conf 然后更改数据库配置: mariab修改最大连接数永久生效: 编辑/usr/lib/systemd/system/mariadb.service,在[Service]项最后加上以下两行: LimitNOFILE=65535 LimitNPROC=65535 编辑/etc/my.cnf和/etc/my.cnf.d/mariadb-server.cnf,在[mysqld]项最后加上下面一行: max_connections=1024 编辑/etc/my.cnf和/etc/my.cnf.d/openstack.cnf,在[mysqld]项最后加上下面一行: max_connections=1024 重启服务 systemctl daemon-reload service mariadb restart 查看支持最大连接数: MariaDB [(none)]> show variables like "max_connections"; 文件句柄数改为最大65535永久生效 编辑文件vim /etc/security/limits.conf,在最末加上: soft nofile 65535 hard nofile 65535 保存退出,reboot后ulimit -n查看是否生效 修改连接释放机制,防止timewait数过多: 编辑文件vim /etc/sysctl.conf,在最末加上: net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30 保存退出,执行sysctl -p
3.安装fwass的问题(防火墙) fwaas_v2安装相关 安装的防火墙是fwaas v2版本的 官网上的教程为 Enable the FWaaS plug-in in the /etc/neutron/neutron.conf file: service_plugins = firewall_v2[service_providers]...service_provider = FIREWALL:Iptables:neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver:default [fwaas]driver = neutron_fwaas.services.firewall.drivers.linux.iptables_fwaas_v2.IptablesFwaasDriverenabled = True Note On Ubuntu, modify the [fwaas] section in the /etc/neutron/fwaas_driver.ini file instead of /etc/neutron/neutron.conf. · Configure the FWaaS plugin for the L3 agent. · In the AGENT section of l3_agent.ini, make sure the FWaaS extension is loaded: · [AGENT] extensions = fwaas_v2 · Edit the FWaaS section in the /etc/neutron/neutron.conf file to indicate the agent version and driver: · [fwaas]agent_version = v2 driver = iptables_v2 enabled = True · · Create the required tables in the database: · # neutron-db-manage --subproject neutron-fwaas upgrade head 不准确,正确配置为 Fwaas A 安装fwaas yum -y install openstack-neutron-fwaas
B 添加fwaas服务 vi /etc/neutron/neutron.conf service_plugins = router,firewall_v2 再加上 [service_providers]...这块原文件中没有 service_provider = FIREWALL:Iptables:neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver:default
C 配置fwaas vi /etc/neutron/fwaas_driver.ini driver = neutron_fwaas.services.firewall.drivers.linux.iptables_fwaas.IptablesFwaasDriver enabled = True
D dashboard启用fwaas vi /usr/share/openstack-dashboard/openstack_dashboard/local/local_settings.py OPENSTACK_NEUTRON_NETWORK = { ... 'enable_firewall' = True, ... }
systemctl restart httpd
E 数据库建表 neutron-db-manage --subproject neutron-fwaas upgrade head
F 重启服务 Systemctl restart neutron-server.service Systemctl restart neutron-l3-agent.service
4. Nova-compute无法启动报错 在更改nova和glance存储路径之后,glance正常启动但是nova-compute无法正常启动,报错 ERROR nova.virt.driver [req-5fc6908a-9b3f-478e-9a0e-c073e7690697 - - - - -] Compute driver option required, but not specified 然后将/etc/nova/nova.conf中# compute_driver设置为 compute_driver=libvirt.LibvirtDriver重新启动之后报错 10:40:19 controller nova-compute[1953]: 2018-02-08 10:40:19.727 1953 ERROR nova self.volume_drivers = self._get_volume_drivers() 2月 08 10:40:19 controller nova-compute[1953]: 2018-02-08 10:40:19.727 1953 ERROR nova File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 391, in _get_volume_drivers 2月 08 10:40:19 controller nova-compute[1953]: 2018-02-08 10:40:19.727 1953 ERROR nova driver_registry[driver_type] = driver_class(self._host) 2月 08 10:40:19 controller nova-compute[1953]: 2018-02-08 10:40:19.727 1953 ERROR nova File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/volume/drbd.py", line 29, in init 2月 08 10:40:19 controller nova-compute[1953]: 2018-02-08 10:40:19.727 1953 ERROR nova connector.DRBD, utils.get_root_helper()) 2月 08 10:40:19 controller nova-compute[1953]: 2018-02-08 10:40:19.727 1953 ERROR nova AttributeError: 'module' object has no attribute 'DRBD' 推断问题和DRDB有关,最后看nova源码,将/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py 中libvirt_volume_drivers下的'drbd=nova.virt.libvirt.volume.drbd.LibvirtDRBDVolumeDriver', 注释掉,重新编译,重启libvirt,然后重启nova-compute成功
5. 更换nova,glance存储路径的方法: NOVA 更改etc/nova/nova.conf的state_path的路径(默认为/var/lib/nova),注意该路径文件夹的权限和所有权要和默认路径一样,改完重启nova各服务 GLANCE 更改/etc/glance/glance-api.conf中 filesystem_store_datadir = 路径(默认为/var/lib/glance/images),注意该路径文件夹的权限和所有权要和默认路径一样,改完重启glance各服务
6. 官网ZUN的安装问题 [Service] ExecStart = /usr/local/bin/zun-compute 里面所有/usr/local/bin的地方都要改为/usr/bin 新建容器:### 从镜像创建容器 zun run --name ubuntu-web --net network=df94a80d-62a9-4551-ae6b-8d0af3f44fc2 ubuntu-webbb tail -f /etc/hosts(后面需要加一个命令否则可能会自动关闭) 查看所有启动的容器 zun list 查看所有的docker镜像 zun image-list 连接容器:zun exec --interactive 容器名 /bin/sh 停止容器 zun stop 容器名 删除 zun delete 注意:docker的镜像和openstack的镜像不一样,中间需要转换 Docker 下载镜像 Docker pull 镜像名
7. 将fwaas加到openstack-dashboard配置 官网教程不准确 装完之后要注意neutron_fwaas_dashboard的版本,版本过高对导致新建防火墙报错(更换版本直接替换/usr/lib/python2/site-packages/neutron_fwaas_dashboard和neutron_fwaas_dashboard-xxx版本这两个文件就行) 具体正确步骤 $ git clone https://git.openstack.org/openstack/neutron-fwaas-dashboard $ cd neutron-fwaas-dashboard $ sudo pip install . $ cp neutron_fwaas_dashboard/enabled/70**.py /usr/share/openstack-dashboard/openstack_dashboard/local/enabled 将neutron-fwaas-dashboard/etc/neutron-fwaas-policy.json拷贝到/etc/openstack-dashboard Cp neutron-fwaas-dashboard/etc/neutron-fwaas-policy.json /etc/openstack-dashboard 改/usr/share/openstack-dashboard/openstack_dashboard/local/local_settings.py文件,在 OPENSTACK_NEUTRON_NETWORK = { 加上 'enable_firewall': True, 8. container(zun-ui)dashboard配置--选pike分支** Yum install zun-ui安装zun-ui(git clone -b stable/pike https://github.com/openstack/zun-ui.git cd zun-ui pip install -r requirement.txt python setup.py install ) 找到zun-ui的安装路径/usr/lib/python2.7/site-packages/zun_ui 将/usr/lib/python2.7/site-packages/zun_ui/enabled下的 _1330_project_container_panelgroup.py _1331_project_container_containers_panel.py _2330_admin_container_panelgroup.py _2331_admin_container_images_panel.py 拷贝到/usr/share/openstack-dashboard/openstack_dashboard/enabled/目录下,然后重启httpd Service httpd restart 在装zunclient时,要指定客户端的版本** pip install python-zunclient==1.1.0
9. 关于docker Docker中最重要的三个概念就是:镜像、容器、库。 镜像:是一个包含了应用程序和其运行时依赖环境的只读文件。 容器:它是构建容器的模板,通过一个镜像我们可以构造出很多相互独立但运行环境一样的容器。 库:Docker提供了Hub来保存公有或私有的镜像,也允许第三方搭建。
docker search centos #搜索容器
docker pull centos #下载容器
docker images #查看当前存在的镜像
docker run centos /bin/echo 'hello world' #运行一条命令后直接退出
docker run --name mydocker -it centos /bin/bash #进入docker容器
-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。 –name 使用一个自定义的名字
docker run -d --name mynginx nginx #启动nginx镜像,没有会自动pull
docker stop bfd094233f96 #停止一个容器,根据容器 id 进行删除
docker rm bfd094233f96 #删除一个容器
docker attach d20f3dc6cd92 #进入一个正在运行的容器
此命令不太好用,建议使用以下命令进入容器:
[root@localhost docker]# docker inspect --format "{{.State.Pid}}" mynginx #获取容器pid 19769 [root@localhost docker]# nsenter --target 19769 --mount --uts --ipc --net --pid #进入容器(推荐方法)
docker run -d -p 91:80 --name mynginx2 nginx # -p 指定端口映射,将80映射为host的91
存储镜像:
docker save -o ubuntu_14.04.tar ubuntu:14.04
载入镜像:
docker load < ubuntu_14.04.tar 或者使用
cat ubuntu.tar | docker import - test/ubuntu:v1.0
移除本地镜像:
docker rmi training/sinatra
清理所有未打过标签的本地镜像:
docker rmi $(docker images -q -f "dangling=true")
其中 -q 和 -f 是 quiet,–filter 的缩写, 完整的命令其实可以写着下面这样,是不是更容易理解一点?
docker rmi $(docker images --quiet --filter "dangling=true")
注: 容器是否会长久运行,是和docker run指定的命令有关,和 -d 参数无关。 要获取容器的输出信息,可以通过 docker logs 命令。
docker logs [container ID or NAMES]
删除容器:
docker rm 默认并不会删除运行中的容器
有关容器和镜像的底层信息:
docker inspect container/image
docker run -d -it -p 8009:8000 django /bin/bash docker run - 运行一个容器 -d - 后台运行 -t - 分配一个(伪)tty (link is external) -i - 交互模式 (so we can interact with it) -p - 端口映射 django - 使用django镜像 /bin/bash - 运行命令 bash shell 查看docker日志 docker logs -f dockerID
Docker是用GO写的
10. Openstack 性能测试工具rally(依赖heat) 安装方法 http://blog.csdn.net/jiahaojie1984/article/details/52043274 执行测试单元rally task start 测试的文件(里面是操作) rally task start create-and-delete-user.json
Rally task list 查看所有任务 rally task abort taskID 停止测试 将测试结果导出到html rally task report taskID --out=report.html
查看web报告问题错误排查: 在查看测试报告文件时,遇到了一个奇怪的现象,我发现在公司电脑上面打不开report.html文件,但是在另外一个同事Mac电脑上面却可以正常打开。后来我在家里用个人电脑上查看report.html文件,发现当打开翻墙功能就可以查看,但是关闭翻墙功能就不能正常查看。于是查看html源代码,发现report.html文件中使用了一些css、js库,而这些库放在了google网站上,因此才会出现这么奇怪的现象。 需要将report.html里面如下四行中的libs网址: 替换为可以访问的bootcss静态库的libs网址,如下: 之后就可以打开了。或者直接将report.html模板文件的对应行修改掉,这样生成的报告web页面都会自动替换。 模板文件位置:/usr/lib/python2.7/site-packages/rally/ui/templates/task/report.html
11.openstack功能测试工具tempest 教程http://blog.csdn.net/liujiong63/article/details/70037598 Tempest.conf配置文件模板
https://github.com/SUSE-Cloud/qa-openstack-tempest/blob/master/tempest.conf.sample
12. 将openstack中对虚拟机的连接从VNC改为spice 教程 https://github.com/bspeng922/notes/blob/master/config_openstack_to_use_spice.md 具体步骤:
yum install spice-server spice-protocol openstack-nova-spicehtml5proxy -y
vim /etc/nova/nova.conf [default] vnc_enabled=false [spice] html5proxy_host=10.10.52.31 html5proxy_port=6082 keymap=en-us
systemctl stop openstack-nova-novncproxy.service systemctl disable openstack-nova-novncproxy.service
systemctl enable openstack-nova-spicehtml5proxy.service systemctl start openstack-nova-spicehtml5proxy.service
systemctl restart httpd.service Compute wget http://dl.fedoraproject.org/pub/epel/7/x86_64/s/spice-html5-0.1.7-1.el7.noarch.rpm rpm -ivh spice-html5-0.1.7-1.el7.noarch.rpm
yum install spice-server spice-protocol
vim /etc/nova/nova.conf [default] vnc_enabled=false [spice] html5proxy_base_url=http://10.10.52.31:6082/spice_auto.html server_listen=0.0.0.0 server_proxyclient_address=10.10.52.32 <当前compute节点IP> enabled=true keymap=en-us
systemctl restart openstack-nova-compute.service 安装完成后,需要硬重启虚拟机才能正常使用spice协议 [root@controller ~]# nova get-spice-console 123123 spice-html5 +-------------+------------------------------------------------------------------------------------+ | Type | Url | +-------------+------------------------------------------------------------------------------------+ | spice-html5 | http://10.10.52.31:6082/spice_auto.html?token=17671c6b-fcaf-484f-8311-a128d6428c8a | +-------------+------------------------------------------------------------------------------------+ Newton 版本需要修改horizon 的local_setting 配置文件,否则页面上还会引用vnc路径,控制台页面提示控制节点“拒绝了我们的连接请求”。 需要将 CONSOLE_TYPE = "AUTO" 改为 CONSOLE_TYPE = "SPICE"
vnc 地址需要配置为IP地址,配置为controller,页面上会提示无法连接 13 tacker组件 组件的依赖 https://docs.openstack.org/keystone/latest/install/index.html https://docs.openstack.org/mistral/latest/install/index.html https://docs.openstack.org/barbican/latest/install/install.html https://docs.openstack.org/horizon/latest/install/index.html
14 zun zun-ui版本和pike版本不一致问题 按照官网教程,在安装zun和zun ui时,官网提供的链接默认为maste分支的代码而不是pike的版本,直接下载下来会导致zun和openstack不兼容,所以要切换到pike分支,再下载 git clone -b stable/pike https://github.com/openstack/zun.git pike_zun 切换分支的方法 git clone -b stable/pike https://github.com/openstack/zun.git pike_zun 说明: -b代表brunch 后面跟你要下载的分支名 15 dashboard安装之后 无法访问dashboard Apache Error: No matching DirectoryIndex (index.html) found 解决办法:编辑:/etc/httpd/conf.d/openstack-dashboard.conf 在WSGISocketPrefix run/wsgi下面加一行代码: WSGIApplicationGroup %{GLOBAL}
16。用spice客户端取代vnc 其中spice-html5无法正常安装,要先装epel (yum -y install epel-release) 输入命令yum repolist刷新,然后就可以装spice-html5了