首页 > 其他分享 >openstack基础云性能优化

openstack基础云性能优化

时间:2023-04-25 10:25:25浏览次数:57  
标签:volume 10 性能 nova ceph cinder openstack 优化

14.基础云性能优化

CSIG/云产品部/企业云平台产品中心

Exported on 11/09/2020

Table of Contents

  1. mariadb 3
  2. haproxy 4
  3. keystone 5
  4. nova 6
    1. 控制节点服务 6
    2. 计算节点服务 6
  5. cinder 7
  6. neutron 11
  7. 注意事项 12

mariadb

  1. 修改mariadb配置文件,在mariadb所有副本节点上修改配置文件/etc/my.conf

[mysqld] max_allowed_packet = 16M connect_timeout = 30

net_read_timeout = 90

net_write_timeout = 180

重启mariadb

systemctl restart mariadb

haproxy

  1. 修改haproxy的默认超时时间,并增加cinder服务的tcp连接超时时间,在frontent与backend下面分别增加如下timeout配置,修改/etc/haproxy/haproxy.conf

defaults

mode tcp maxconn 4000

timeout connect 10s timeout client 5m timeout server 5m

frontend vip-cinder #...

timeout client 600s backend cinder-vms

#...

timeout server 600s

重启haproxy服务

systemctl restart haproxy

keystone

1. 修改keystone token超时时间为24小时,编辑配置文件/etc/keystone/keystone.conf

[token]

expiration = 86400

nova

控制节点服务

      1. 禁用nova quota功能,编辑配置文件/etc/nova/nova.conf

[quota]

driver = nova.quota.NoopQuotaDriver

      1. 配置数据库连接数,编辑配置文件/etc/nova/nova.conf

[api_database] max_pool_size = 100

max_overflow = 1000

max_retries = -1

[database] max_pool_size = 100

max_overflow = 1000

max_retries = -1

计算节点服务

      1. 虚拟机默认使用config drive,编辑配置文件/etc/nova/compute.conf

[DEFAULT]

force_config_drive = True

      1. 计算节点禁用自动disable,默认在连续创建10个虚拟机失败后,会自动禁用nova-compute服务,编辑配置文件/etc/nova/compute.conf

[compute] consecutive_build_service_disable_threshold = 0

      1. 禁用nova quota功能,编辑配置文件/etc/nova/compute.conf

[quota]

driver = nova.quota.NoopQuotaDriver

cinder

禁用cinder quota功能,确保具有

<

%E4%B8%AD%E7%9A%84%E4%BB%A3%E7%A0%81%E6%8F%90%E4%BA%A4%EF%BC%88%E5%9F%BA

%E7%A1%80%E4%BA%91stable/ tstack_19.7%E5%8F%8A%E4%B9%8B%E5%90%8E%E7%9A%84%E5%88%86%E6%94%AF%E9%83%BD%E 5%90%88%E5%85%A5%E4%BA%86%E6%AD%A4%E9%83%A8%E5%88%86%E4%BB%A3%E7%A0%81%E6

%8F%90%E4%BA%A4%EF%BC%89%E3%80%82%E7%84%B6%E5%90%8E%E4%BF%AE%E6%94%B9%E9

%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/etc/cinder/cinder.conf">https://git.code.oa.com/ openstack/cinder_Pike/commit/2f197fecf5ca654e80ee6b1e4a6f71e5fb271ae5>中的代码提交(基础云 stable/tstack_19.7及之后的分支都合入了此部分代码提交)。然后修改配置文件/etc/cinder/

cinder.conf(see page 3)

[DEFAULT]

quota_driver = cinder.quota.NoopQuotaDriver

  1. 设置cinder rpc同步调用超时时间,默认为60秒,并增加随机调度。修改配置文件/etc/cinder/ cinder.conf

[DEFAULT]

rpc_response_timeout = 600

scheduler_default_weighers = CapacityWeigher,ChanceWeigher

  1. 设置cinder数据库连接数。修改配置文件/etc/cinder/cinder.conf

[database] max_pool_size = 100

max_overflow = 1000

max_retries = -1

  1. 调整cinder-api服务进程数量。修改配置文件/etc/cinder/cinder.conf

[DEFAULT]

osapi_volume_workers = 5

解决cinder中大量出现的Lost connection问题,更新cinder代码,确保具有

<

%E4%B8%AD%E7%9A%84%E4%BB%A3%E7%A0%81%E6%8F%90%E4%BA%A4%28%E5%9F%BA%E7%A1

%80%E4%BA%91stable/ tstack_20.3%E5%8F%8A%E4%B9%8B%E5%90%8E%E7%9A%84%E5%88%86%E6%94%AF%E9%83%BD%E 5%90%88%E5%85%A5%E4%BA%86%E6%AD%A4%E9%83%A8%E5%88%86%E4%BB%A3%E7%A0%81%29

%E3%80%82">https://git.code.oa.com/openstack/cinder_Pike/commit/ efdb9ea7d67384996f2b683b32883321eb4734cc>中的代码提交(基础云stable/tstack_20.3及之后的分支都合入了此部分代码)。(see page 3)

provision上报

6.1 原理说明

在cinder-scheduler中通过查找数据库并计算相应ceph后端driver所创建的卷的所有size总和赋予 provisioned_capacity_gb,而cinder-volume就不需要去遍历访问ceph池,此字段主要是在创建卷时用来计算超分比

6.2 注意事项

(1)查看所有的ceph driver名字,通过cinder service-list查看,如下

+------------------+----------------------------------------+------+---------

+-------+----------------------------+ +

| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |

+------------------+----------------------------------------+------+---------

+-------+----------------------------+ +

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

|

nova

|

enabled

|

| cinder-backup | openstack-B-con01

up | 2020-10-06T01:50:26.000000 | - |

| cinder-backup | openstack-B-con02

up | 2020-10-06T01:50:28.000000 | - |

| cinder-backup | openstack-B-con03

up | 2020-10-06T01:50:31.000000 | - |

| cinder-scheduler | openstack-B-con01

up | 2020-10-06T01:50:30.000000 | - |

| cinder-scheduler | openstack-B-con02

up | 2020-10-06T01:50:30.000000 | - |

| cinder-scheduler | openstack-B-con03

up | 2020-10-06T01:50:29.000000 | - |

| cinder-volume | openstack-B-con01@ceph_hdd

down | 2020-10-06T01:48:25.000000 | - |

| cinder-volume | openstack-B-con01@ceph_hdd2

up | 2020-10-06T01:50:29.000000 | - |

| cinder-volume | openstack-B-con01@ceph_hdd3

up | 2020-10-06T01:50:29.000000 | - |

| cinder-volume | openstack-B-con01@ceph_hdd4

up | 2020-10-06T01:50:30.000000 | - |

| cinder-volume | openstack-B-con01@ceph_hdd5

up | 2020-10-06T01:50:30.000000 | - |

| cinder-volume | openstack-B-con01@ceph_hdd6

up | 2020-10-06T01:50:30.000000 | - |

| cinder-volume | openstack-B-con01@ceph_hdd_multiattach up | 2020-10-06T01:50:29.000000 | - |

| cinder-volume | openstack-B-con02@ceph_hdd

up | 2020-10-06T01:50:00.000000 | - |

| cinder-volume | openstack-B-con02@ceph_hdd2

up | 2020-10-06T01:50:31.000000 | - |

| cinder-volume | openstack-B-con02@ceph_hdd3

up | 2020-10-06T01:50:31.000000 | - |

| cinder-volume | openstack-B-con02@ceph_hdd4

up | 2020-10-06T01:50:32.000000 | - |

| cinder-volume | openstack-B-con02@ceph_hdd5

up | 2020-10-06T01:50:23.000000 | - |

| cinder-volume | openstack-B-con02@ceph_hdd6

up | 2020-10-06T01:50:31.000000 | - |

| cinder-volume | openstack-B-con02@ceph_hdd_multiattach up | 2020-10-06T01:50:31.000000 | - |

| cinder-volume | openstack-B-con03@ceph_hdd

down | 2020-10-06T01:49:14.000000 | - |

| cinder-volume | openstack-B-con03@ceph_hdd2

up | 2020-10-06T01:50:24.000000 | - |

| cinder-volume | openstack-B-con03@ceph_hdd3

up | 2020-10-06T01:50:24.000000 | - |

| cinder-volume | openstack-B-con03@ceph_hdd4

up | 2020-10-06T01:50:25.000000 | - |

| cinder-volume | openstack-B-con03@ceph_hdd5

up | 2020-10-06T01:50:25.000000 | - |

| cinder-volume | openstack-B-con03@ceph_hdd6

up | 2020-10-06T01:50:24.000000 | - |

| cinder-volume | openstack-B-con03@ceph_hdd_multiattach up | 2020-10-06T01:50:24.000000 | - |

+------------------+----------------------------------------+------+---------

+-------+----------------------------+ +

我们增加了一个配置keyword_in_backend,这个参数主要是用来识别ceph后端的,也就是ceph后端包含的关键字,这是一个list,可以包含多个,默认配置是['ceph']

这里可以看到所有后端都包含ceph,可以在cinder配置中增加

[DEFAULT]

keyword_in_backend = ceph

因为默认值是ceph可以不配置,如果还有ceph后端包含rbd可以这样配置

[DEFAULT]

keyword_in_backend = ceph,rbd

修改cinder-scheduler代码(代码已经提交到20.3和tstack_master分支,这里只是列出优化点) cinder/scheduler/host_manager.py文件

+ 61

cfg.ListOpt('keyword_in_backend',

default=[

'ceph'

+ 506行左右

],

help='Keywords contained in the backend'),

backend = cluster_name or host backend_name = backend.split("@")[1] for keyword in CONF.keyword_in_backend:

if backend_name.find(keyword) != -1:

ctxt = cinder_context.get_admin_context()

volumes = objects.VolumeList.get_all(ctxt, filters={"host~": "@%s#" % backend_name})

provioned_capacity_gb = 0 for volume in volumes:

provisioned_capacity_gb += volume.size

capab_copy['provisioned_capacity_gb'] = provisioned_capacity_gb break

capab_old = self.service_states.get(backend, {"timestamp": 0})

+ 551

'cap': capab_copy,

修改cinder-volume代码 cinder/volume/drivers/rbd.py

+ 471

#total_gbi = self._get_usage_info() total_gbi = 0 stats['provisioned_capacity_gb'] = total_gbi

重启cinder-volume和cinder-scheduler

systemctl restart openstack-cinder-volume systemctl restart openstack-cinder-scheduler

并观察cinder-scheduler日志,查看有没有上报错误信息

  1. 设置不从镜像下载,修改配置文件/etc/cinder/cinder.conf
  • [DEFAULT]

allow_download_image_from_glance = false allow_copy_volume_over_backends = True

neutron

  1. 设置neutron数据库连接数。修改配置文件/etc/neutron/neutron.conf

[DEFAULT]

ovs_vsctl_timeout = 30

[database] max_pool_size = 100

max_overflow = 100

max_retries = -1

  1. 修改neutron ml2 /etc/neutron/plugins/ml2/ml2_conf.ini

[ovs]

vsdb_interface = vsctl

修改neutron l3配置

[DEFAULT]

ovs_use_veth=True ovs_vsctl_timeout = 30

注意事项

cinder禁止Ceph的一个池作为两个后端使用(多挂载的后端除外,因为比较少)

cinder中ceph后端的名字规范起来,最好包含ceph字样

0001-Add-NoopQuotaDriver.patch1

1 https://iwiki.woa.com/download/attachments/377030353/0001-Add-NoopQuotaDriver.patch? api=v2&modificationDate=1602235427000&version=1

标签:volume,10,性能,nova,ceph,cinder,openstack,优化
From: https://www.cnblogs.com/xuning-xuning/p/17351829.html

相关文章

  • 想要性能提升?看看这篇文章告诉你性能场景的数据该怎么做!
    性能项目中,性能数据是重要的输入资源。但有人用极少的数据,来做较大压力,显然不符合真实场景,虽然拿到的结果好看,但无价值。性能场景中的数据到底应该做成啥样?RESAR性能工程中,场景里使用的数据要满足:符合真实环境中的数据分布才能模拟出相应的IO操作符合真实用户输入的数据以真正模拟......
  • tracecompass 基于trace+log 分析系统性能问题的gui 工具
    tracecompass是eclipse社区贡献的,支持对于trace以及log进行方便的分析,可以用来快速分析系统性能问题支持多种trace格式,包含了linux,标准jaeger,linpacp,lltng,gdbtrace是一个很不错的工具,同时官方也提供了比较完备的资料可以参考说明tracecompass是一个值得使用的工具,值得......
  • sql优化 一般有用 看1
     16.垂直分割“垂直分割”是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的。(以前,在银行做过项目,见过一张表有100多个字段,很恐怖)示例一:在Users表中有一个字段是家庭地址,这个字段是可选字段,相比起,而且你在数据库......
  • 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 16.优化交互,实现看到物体时出现交互提
    斯坦福课程UE4C++ActionRoguelike游戏实例教程0.绪论概述本篇文章对应Lecture18–CreatingBuffs,WorldInteraction,73节。本文将会重构以前实现过的SurInteractionComponent,实现在玩家注释可交互物体时,可以出现可交互提示,效果如下:在文章的最后,我会放出所有相关的代......
  • python多重for循环优化
    在日常工作中需要写脚本造数据来进行各种测试活动,有时候就会用到多重for循环。多重for循环虽然简单易懂,但是会不那么简洁,这个时候就需要此技巧了。在此构建三个列表app_ids=["AppAcsrvice","AppAcsrvice1"]、iface_names=["queryAdjustStl","queryAdjustStl1"]、offsets=......
  • MySQL性能分析工具的使用
    在数据库调优种,我们的目标就是响应时间更快,吞吐量更大。利用宏观的监控工具和微观的日志分析可以帮我们快速找到调优的思路或方法。一、数据库服务器的优化步骤   二、查看系统性能参数在MySQL种,可以使用showstatus语句查询一些MySQL数据库服务器的性能参数和执行频率......
  • 性能测试常用语
    QPSQueriesPerSecond(读操作)意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。TPS(写操作)是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器......
  • Rust、Go 和 Swift 在性能和并发性方面有何差异?
    Rust是一种系统编程语言,旨在快速、安全和并发。其性能令人印象深刻,可以生成快速高效的机器代码。Rust 的编译器使用 LLVM 基础架构,它针对目标架构优化了代码。此外,Rust 的所有权和借用系统确保内存得到有效管理,没有任何运行时开销。Rust的并发模型是基于actor模型的,也就是说并......
  • Redis Plus 来了,性能炸裂!
    来源:https://developer.aliyun.com/article/7052391什么是KeyDB?KeyDB是Redis的高性能分支,专注于多线程,内存效率和高吞吐量。除了多线程之外,KeyDB还具有仅在RedisEnterprise中可用的功能,例如ActiveReplication,FLASH存储支持以及一些根本不可用的功能,例如直接备份到AWSS3。Ke......
  • 性能测试-全栈性能测试修炼宝典jmeter实战【杭州多测师_王sir】【杭州多测师】
    全栈性能测试修炼宝典jmeter实战中关于tps计算和并发线程数的计算、以及性能场景的设计 ......