首页 文章 精选 留言 我的

精选列表

搜索[动态节点],共10000篇文章
优秀的个人博客,低调大师

Openstack 实战讲解之-----------03-控制节点服务配置

设置时间同步: 对于openstack来说,时间同步非常重要,所以一定要保证所有服务的时间一直,下面对世界做同步: 1 2 3 4 timedatectllist-timezones| grep Shanghai查看时区 timedatectl set -timezoneAsia /Shanghai 设置时区 timedatectl set - local -rtc yes 把boolean替换成 yes 则表示使用本地时间,替换成no则表示是UTC时间 ntpdatetime1.aliyun.com同步时间 启动数据库服务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 [root@linux-node1~] #systemctlenablemariadb.service设置开机自启动 Created symlink from /etc/systemd/system/multi-user .target.wants /mariadb .serviceto /usr/lib/systemd/system/mariadb .service. [root@linux-node1~] #systemctlstartmariadb.service启动数据库 [root@linux-node1~] #mysql_secure_installation初始化并设置密码 NOTE:RUNNINGALLPARTSOFTHISSCRIPTISRECOMMENDEDFORALLMariaDB SERVERSINPRODUCTIONUSE!PLEASEREADEACHSTEPCAREFULLY! InordertologintoMariaDBtosecureit,we'llneedthecurrent password for therootuser.Ifyou'vejustinstalledMariaDB,and youhaven't set therootpasswordyet,thepasswordwillbeblank, soyoushouldjustpressenterhere. Entercurrentpassword for root(enter for none): OK,successfullyusedpassword,movingon... SettingtherootpasswordensuresthatnobodycanlogintotheMariaDB rootuserwithouttheproperauthorisation. Setrootpassword?[Y /n ]y Newpassword: Re-enternewpassword: Passwordupdatedsuccessfully! Reloadingprivilegetables.. ...Success! Bydefault,aMariaDBinstallationhasananonymoususer,allowinganyone tologintoMariaDBwithouthavingtohaveauseraccountcreated for them.Thisisintendedonly for testing,andto make theinstallation goabitsmoother.Youshouldremovethembeforemovingintoa productionenvironment. Removeanonymous users ?[Y /n ]y ...Success! Normally,rootshouldonlybeallowedtoconnectfrom 'localhost' .This ensuresthatsomeonecannotguessattherootpasswordfromthenetwork. Disallowrootloginremotely?[Y /n ]y ...Success! Bydefault,MariaDBcomeswithadatabasenamed 'test' thatanyonecan access.Thisisalsointendedonly for testing,andshouldberemoved beforemovingintoaproductionenvironment. Remove test databaseandaccesstoit?[Y /n ]y -Dropping test database... ...Success! -Removingprivilegeson test database... ...Success! Reloadingtheprivilegetableswillensurethatallchangesmadesofar willtakeeffectimmediately. Reloadprivilegetablesnow?[Y /n ]y ...Success! Cleaningup... All done !Ifyou'vecompletedalloftheabovesteps,yourMariaDB installationshouldnowbesecure. Thanks for usingMariaDB! 配置rabbitMQ消息队列 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 [root@linux-node1~] #systemctlenablerabbitmq-server.service#设置开机启动 Created symlink from /etc/systemd/system/multi-user .target.wants /rabbitmq-server .serviceto /usr/lib/systemd/system/rabbitmq-server .service. [root@linux-node1~] #systemctlstartrabbitmq-server.service#启动消息队列 [root@linux-node1~] #rabbitmqctladd_useropenstackopenstack#给消息队列增加openstack用户和密码 Creatinguser "openstack" ... [root@linux-node1~] #rabbitmqctlset_permissionsopenstack".*"".*"".*"#给openstack设置消息队列的权限 Settingpermissions for user "openstack" in vhost "/" ... [root@linux-node1~] #rabbitmq-pluginslist#查看消息队列插件 Configured:E=explicitlyenabled;e=implicitlyenabled |Status:*=runningonrabbit@linux-node1 |/ []amqp_client3.6.5 []cowboy1.0.3 []cowlib1.0.1 []mochiweb2.13.1 []rabbitmq_amqp1_03.6.5 []rabbitmq_auth_backend_ldap3.6.5 []rabbitmq_auth_mechanism_ssl3.6.5 []rabbitmq_consistent_hash_exchange3.6.5 []rabbitmq_event_exchange3.6.5 []rabbitmq_federation3.6.5 []rabbitmq_federation_management3.6.5 []rabbitmq_jms_topic_exchange3.6.5 []rabbitmq_management3.6.5 []rabbitmq_management_agent3.6.5 []rabbitmq_management_visualiser3.6.5 []rabbitmq_mqtt3.6.5 []rabbitmq_recent_history_exchange1.2.1 []rabbitmq_sharding0.1.0 []rabbitmq_shovel3.6.5 []rabbitmq_shovel_management3.6.5 []rabbitmq_stomp3.6.5 []rabbitmq_top3.6.5 []rabbitmq_tracing3.6.5 []rabbitmq_trust_store3.6.5 []rabbitmq_web_dispatch3.6.5 []rabbitmq_web_stomp3.6.5 []rabbitmq_web_stomp_examples3.6.5 []sockjs0.3.4 []webmachine1.10.3 [root@linux-node1~] #rabbitmq-pluginsenablerabbitmq_management#加载消息队列的管理插件 Thefollowingpluginshavebeenenabled: mochiweb webmachine rabbitmq_web_dispatch amqp_client rabbitmq_management_agent rabbitmq_management Applyingpluginconfigurationtorabbit@linux-node1...started6plugins. [root@linux-node1~] #systemctlrestartrabbitmq-server.service#重启消息队列服务 消息队列服务验证 1 2 3 4 [root@linux-node1~] #lsof-i:15672 COMMANDPIDUSERFDTYPEDEVICESIZE /OFF NODENAME beam.smp6370rabbitmq53uIPv4373570t0TCP*:15672(LISTEN) 在浏览器中输入:192.168.56.11:15672,使用guest账号和guest密码登录 keystone认证服务 Keystone在N版已经是V3版本。在Keystone中主要涉及以下几个概念: User:使用服务的用户,可以是人,服务或者系统,只要是使用了openstack服务的对象都可以称为用户 project(tenant)租户,可以理解为一个人,项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源 Role:角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限 Token:认证成功后,keystone会生成一串比特值或者字符串,用来作为访问资源的令牌,token中有可访问资源的范围和有效时间 Keystone V3 API 新特性 Keystone V3 做出了许多变化和改进,我们选取其中较为重要的进行阐述: 将 Tenant 改称为 Project 引入 Domain 的概念 引入 Group 的概念 将 Tenant 改为 Project 并在其上添加 Domain 的概念,这更加符合现实世界和云服务的映射。 V3 利用 Domain 实现真正的多租户(multi-tenancy)架构,Domain 担任 Project 的高层容器。云服务的客户是 Domain 的所有者,他们可以在自己的 Domain 中创建多个 Projects、Users、Groups 和 Roles。通过引入 Domain,云服务客户可以对其拥有的多个 Project 进行统一管理,而不必再向过去那样对每一个 Project 进行单独管理。 Group 是一组 Users 的容器,可以向 Group 中添加用户,并直接给 Group 分配角色,那么在这个 Group 中的所有用户就都拥有了 Group 所拥有的角色权限。通过引入 Group 的概念,Keystone V3 实现了对用户组的管理,达到了同时管理一组用户权限的目的。这与 V2 中直接向 User/Project 指定 Role 不同,使得对云服务进行管理更加便捷。 图 . Domain、Group、Project、User 和 Role 的关系图(引用网上) 创建库及用户 在数据库中创建库和用户(这里为了方便会把后面用到cinder,glance ,neutron,等服务的账号一并创建到数据库中 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATEDATABASEkeystone; GRANTALLPRIVILEGESONkeystone.*TO 'keystone' @ 'localhost' IDENTIFIEDBY 'keystone' ; GRANTALLPRIVILEGESONkeystone.*TO 'keystone' @ '%' IDENTIFIEDBY 'keystone' ; CREATEDATABASEglance; GRANTALLPRIVILEGESONglance.*TO 'glance' @ 'localhost' IDENTIFIEDBY 'glance' ; GRANTALLPRIVILEGESONglance.*TO 'glance' @ '%' IDENTIFIEDBY 'glance' ; CREATEDATABASEnova; GRANTALLPRIVILEGESONnova.*TO 'nova' @ 'localhost' IDENTIFIEDBY 'nova' ; GRANTALLPRIVILEGESONnova.*TO 'nova' @ '%' IDENTIFIEDBY 'nova' ; CREATEDATABASEnova_api; GRANTALLPRIVILEGESONnova_api.*TO 'nova' @ 'localhost' IDENTIFIEDBY 'nova' ; GRANTALLPRIVILEGESONnova_api.*TO 'nova' @ '%' IDENTIFIEDBY 'nova' ; CREATEDATABASEneutron; GRANTALLPRIVILEGESONneutron.*TO 'neutron' @ 'localhost' IDENTIFIEDBY 'neutron' ; GRANTALLPRIVILEGESONneutron.*TO 'neutron' @ '%' IDENTIFIEDBY 'neutron' ; CREATEDATABASEcinder; GRANTALLPRIVILEGESONcinder.*TO 'cinder' @ 'localhost' IDENTIFIEDBY 'cinder' ; GRANTALLPRIVILEGESONcinder.*TO 'cinder' @ '%' IDENTIFIEDBY 'cinder' ; 执行过程: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [root@linux-node1~] #mysql-uroot-p Enterpassword: #用初始化时候设置的密码 MariaDB[(none)]>GRANTALLPRIVILEGESONkeystone.*TO 'keystone' @ '%' IDENTIFIEDBY 'keystone' ; QueryOK,0rowsaffected(0.00sec) MariaDB[(none)]>CREATEDATABASEglance; QueryOK,1rowaffected(0.00sec) MariaDB[(none)]>GRANTALLPRIVILEGESONglance.*TO 'glance' @ 'localhost' IDENTIFIEDBY 'glance' ; QueryOK,0rowsaffected(0.00sec) MariaDB[(none)]>GRANTALLPRIVILEGESONglance.*TO 'glance' @ '%' IDENTIFIEDBY 'glance' ; QueryOK,0rowsaffected(0.00sec) MariaDB[(none)]>CREATEDATABASEnova; QueryOK,1rowaffected(0.00sec) MariaDB[(none)]>GRANTALLPRIVILEGESONnova.*TO 'nova' @ 'localhost' IDENTIFIEDBY 'nova' ; QueryOK,0rowsaffected(0.00sec) MariaDB[(none)]>GRANTALLPRIVILEGESONnova.*TO 'nova' @ '%' IDENTIFIEDBY 'nova' ; QueryOK,0rowsaffected(0.00sec) MariaDB[(none)]>CREATEDATABASEnova_api; QueryOK,1rowaffected(0.00sec) MariaDB[(none)]>GRANTALLPRIVILEGESONnova_api.*TO 'nova' @ 'localhost' IDENTIFIEDBY 'nova' ; QueryOK,0rowsaffected(0.00sec) MariaDB[(none)]>GRANTALLPRIVILEGESONnova_api.*TO 'nova' @ '%' IDENTIFIEDBY 'nova' ; QueryOK,0rowsaffected(0.00sec) MariaDB[(none)]>CREATEDATABASEneutron; QueryOK,1rowaffected(0.00sec) MariaDB[(none)]>GRANTALLPRIVILEGESONneutron.*TO 'neutron' @ 'localhost' IDENTIFIEDBY 'neutron' ; QueryOK,0rowsaffected(0.00sec) MariaDB[(none)]>GRANTALLPRIVILEGESONneutron.*TO 'neutron' @ '%' IDENTIFIEDBY 'neutron' ; QueryOK,0rowsaffected(0.00sec) MariaDB[(none)]>CREATEDATABASEcinder; QueryOK,1rowaffected(0.00sec) MariaDB[(none)]>GRANTALLPRIVILEGESONcinder.*TO 'cinder' @ 'localhost' IDENTIFIEDBY 'cinder' ; QueryOK,0rowsaffected(0.00sec) MariaDB[(none)]>GRANTALLPRIVILEGESONcinder.*TO 'cinder' @ '%' IDENTIFIEDBY 'cinder' ; QueryOK,0rowsaffected(0.00sec) MariaDB[(none)]>showdatabases; +--------------------+ |Database| +--------------------+ |cinder| |glance| |information_schema| |keystone| |mysql| |neutron| |nova| |nova_api| |performance_schema| +--------------------+ 9rows in set (0.00sec) keystone配置文件 1 2 3 4 5 [root@linux-node1~] #grep-n'^[a-z]'/etc/keystone/keystone.conf 640:connection=mysql+pymysql: //keystone :keystone@192.168.56.11 /keystone 1472:servers=192.168.56.11:11211 #memcache服务地址 2655:provider=fernet #配置令牌 2665:driver=memcache #选择driver为memcache默认是sql 初始化数据库,memcache配置 1 su -s /bin/sh -c "keystone-managedb_sync" keystone 验证初始化是否成功: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [root@linux-node1~] #mysql-h192.168.56.11-ukeystone-pkeystone-e"usekeystone;showtables;" +------------------------+ |Tables_in_keystone| +------------------------+ |access_token| |assignment| |config_register| |consumer| |credential| |endpoint| |endpoint_group| |federated_user| |federation_protocol| |group| |id_mapping| |identity_provider| |idp_remote_ids| |implied_role| |local_user| |mapping| |migrate_version| |nonlocal_user| |password| |policy| |policy_association| |project| |project_endpoint| |project_endpoint_group| |region| |request_token| |revocation_event| |role| |sensitive_config| |service| |service_provider| |token| |trust| |trust_role| |user| |user_group_membership| |whitelisted_config| +------------------------+ 安装memcached 1 2 3 4 5 6 7 8 yuminstallmemcachedpython-memcached vim /etc/sysconfig/memcached [root@linux-node1~] #cat/etc/sysconfig/memcached PORT= "11211" USER= "memcached" MAXCONN= "1024" CACHESIZE= "64" OPTIONS= "-l192.168.56.11,::1" 通过keystone-manage生成token认证必要的信息: 1 2 3 4 5 6 7 [root@linux-node1keystone] #keystone-managefernet_setup--keystone-userkeystone--keystone-groupkeystone [root@linux-node1keystone] #keystone-managecredential_setup--keystone-userkeystone--keystone-groupkeystone [root@linux-node1keystone] #keystone-managebootstrap--bootstrap-passwordadmin\ >--bootstrap-admin-urlhttp: //192 .168.56.11:35357 /v3/ \ >--bootstrap-internal-urlhttp: //192 .168.56.11:35357 /v3/ \ >--bootstrap-public-urlhttp: //192 .168.56.11:5000 /v3/ \ >--bootstrap-region- id RegionOne 配置apache服务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 [root@linux-node1keystone] #vim/etc/httpd/conf/httpd.conf#编辑配置文件, 95ServerName192.168.56.11:80 配置软连接 [root@linux-node1keystone] #ln-s/usr/share/keystone/wsgi-keystone.conf/etc/httpd/conf.d/ 启动服务: [root@linux-node1keystone] #systemctlenablehttpd.service Created symlink from /etc/systemd/system/multi-user .target.wants /httpd .serviceto /usr/lib/systemd/system/httpd .service. [root@linux-node1keystone] #systemctlstarthttpd.service [root@linux-node1keystone] # [root@linux-node1keystone] #lsof-i:80 COMMANDPIDUSERFDTYPEDEVICESIZE /OFF NODENAME httpd22891root4uIPv6591570t0TCP*:http(LISTEN) httpd22902apache4uIPv6591570t0TCP*:http(LISTEN) httpd22906apache4uIPv6591570t0TCP*:http(LISTEN) httpd22907apache4uIPv6591570t0TCP*:http(LISTEN) httpd22908apache4uIPv6591570t0TCP*:http(LISTEN) httpd22909apache4uIPv6591570t0TCP*:http(LISTEN) 配置环境变量: export OS_USERNAME=admin export OS_PASSWORD=admin export OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_DOMAIN_NAME=Default export OS_AUTH_URL=http: //192 .168.56.11:35357 /v3 export OS_IDENTITY_API_VERSION=3 安装openstack客户端,如果不安装是没有openstack命令的 yum install -ypython-openstackclient 安装完毕执行以下命令验证: [root@linux-node1keystone] #openstackuserlist#查看用户列表 +----------------------------------+-------+ |ID|Name| +----------------------------------+-------+ |b84c1614b79b40278e02bd6ed034cc6f|admin| +----------------------------------+-------+ [root@linux-node1keystone] #openstackrolelist#查看权限列表 +----------------------------------+-------+ |ID|Name| +----------------------------------+-------+ |9b0ba78cf70048efa8659220a3cebd06|admin| +----------------------------------+-------+ [root@linux-node1keystone] #openstackprojectlist#查看项目列表 +----------------------------------+-------+ |ID|Name| +----------------------------------+-------+ |7ae0fb7deb5342d885a07c2c890a1ff4|admin| +----------------------------------+-------+ [root@linux-node1keystone] #openstackendpointlist#查看端点列表 +---------------+-----------+--------------+--------------+---------+-----------+------------------+ |ID|Region|ServiceName|ServiceType|Enabled|Interface|URL| +---------------+-----------+--------------+--------------+---------+-----------+------------------+ |65f66a71d4624|RegionOne|keystone|identity|True|internal|http: //192 .168.5| |2a0a80a0de1b6||||||6.11:35357 /v3/ | |503929||||||| |71f801be8bc54|RegionOne|keystone|identity|True|admin|http: //192 .168.5| |7aca380c81b79||||||6.11:35357 /v3/ | |6b240a||||||| |b1caff56f31f4|RegionOne|keystone|identity|True|public|http: //192 .168.5| |dfabe5a8418c6||||||6.11:5000 /v3/ | |5e2839||||||| +---------------+-----------+--------------+--------------+---------+-----------+------------------+ 创建项目: 1 2 3 4 5 6 7 8 9 10 11 12 [root@linux-node1keystone] #openstackprojectcreate--domaindefault--description"ServiceProject"service +-------------+----------------------------------+ |Field|Value| +-------------+----------------------------------+ |description|ServiceProject| |domain_id|default| |enabled|True| | id |7f240473406147b99463f32b876bf69d| |is_domain|False| |name|service| |parent_id|default| +-------------+----------------------------------+ 这里生成的结果除了id和我不一样,其他的差不多一样 查看是否创建成功 1 2 3 4 5 6 7 [root@linux-node1keystone] #openstackprojectlist +----------------------------------+---------+ |ID|Name| +----------------------------------+---------+ |7ae0fb7deb5342d885a07c2c890a1ff4|admin| |7f240473406147b99463f32b876bf69d|service| +----------------------------------+---------+ 创建demo项目: 1 2 3 4 5 6 7 8 9 10 11 12 [root@linux-node1keystone] #openstackprojectcreate--domaindefault--description"DemoProject"demo +-------------+----------------------------------+ |Field|Value| +-------------+----------------------------------+ |description|DemoProject| |domain_id|default| |enabled|True| | id |9b913d25891849baa55b21d837e9b63d| |is_domain|False| |name|demo| |parent_id|default| +-------------+----------------------------------+ 验证是否创建成功: 1 2 3 4 5 6 7 8 [root@linux-node1keystone] #openstackprojectlist +----------------------------------+---------+ |ID|Name| +----------------------------------+---------+ |7ae0fb7deb5342d885a07c2c890a1ff4|admin| |7f240473406147b99463f32b876bf69d|service| |9b913d25891849baa55b21d837e9b63d|demo| +----------------------------------+---------+ 创建用户 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [root@linux-node1keystone] #openstackusercreate--domaindefault--password-promptdemo UserPassword: RepeatUserPassword: +---------------------+----------------------------------+ |Field|Value| +---------------------+----------------------------------+ |domain_id|default| |enabled|True| | id |f0c69bad72b54e0daef92c2295425932| |name|demo| |password_expires_at|None| +---------------------+----------------------------------+ [root@linux-node1keystone] #openstackuserlist +----------------------------------+-------+ |ID|Name| +----------------------------------+-------+ |b84c1614b79b40278e02bd6ed034cc6f|admin| |f0c69bad72b54e0daef92c2295425932|demo| +----------------------------------+-------+ 创建role权限: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@linux-node1keystone] #openstackrolecreateuser +-----------+----------------------------------+ |Field|Value| +-----------+----------------------------------+ |domain_id|None| | id |f53267146a6449b797393f7fc5d23e10| |name|user| +-----------+----------------------------------+ [root@linux-node1keystone] #openstackrolelist +----------------------------------+-------+ |ID|Name| +----------------------------------+-------+ |9b0ba78cf70048efa8659220a3cebd06|admin| |f53267146a6449b797393f7fc5d23e10|user| +----------------------------------+-------+ 把用户添加到项目中,并赋予权限 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [root@linux-node1keystone] #openstackroleadd--projectdemo--userdemouser#把demo用户加到demo项目中并赋予user权限 这里我把以后各个服务用户赋予不同role规则: [root@linux-node1keystone] #openstackusercreate--domaindefault--password-promptglance UserPassword: RepeatUserPassword: +---------------------+----------------------------------+ |Field|Value| +---------------------+----------------------------------+ |domain_id|default| |enabled|True| | id |8dc6f28207b64e6d845a444a2ba18205| |name|glance| |password_expires_at|None| +---------------------+----------------------------------+ [root@linux-node1keystone] #openstackroleadd--projectservice--userglanceadmin [root@linux-node1keystone] #openstackusercreate--domaindefault--password-promptnova UserPassword: RepeatUserPassword: +---------------------+----------------------------------+ |Field|Value| +---------------------+----------------------------------+ |domain_id|default| |enabled|True| | id |db596da4ed8f47ab9dc7fa77d3bc8c6c| |name|nova| |password_expires_at|None| +---------------------+----------------------------------+ [root@linux-node1keystone] #openstackroleadd--projectservice--usernovaadmin [root@linux-node1keystone] #openstackusercreate--domaindefault--password-promptneutron UserPassword: RepeatUserPassword: +---------------------+----------------------------------+ |Field|Value| +---------------------+----------------------------------+ |domain_id|default| |enabled|True| | id |c0f9c52898ad4d4f88254a01c458eb27| |name|neutron| |password_expires_at|None| +---------------------+----------------------------------+ [root@linux-node1keystone] #openstackroleadd--projectservice--userneutronadmin [root@linux-node1keystone] #openstackusercreate--domaindefault--password-promptcinder UserPassword: RepeatUserPassword: +---------------------+----------------------------------+ |Field|Value| +---------------------+----------------------------------+ |domain_id|default| |enabled|True| | id |e5dbdde24a7340edb8bd3f498f9d28b5| |name|cinder| |password_expires_at|None| +---------------------+----------------------------------+ [root@linux-node1keystone] #openstackroleadd--projectservice--usercinderadmin 验证keystone 验证用户: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 unset OS_AUTH_URLOS_PASSWORD取消之前的环境变量 [root@linux-node1keystone] #openstack\ >--os-auth-urlhttp: //192 .168.56.11:35357 /v3 \ >--os-project-domain-namedefault\ >--os-user-domain-namedefault\ >--os-project-nameadmin\ >--os-usernameadmintokenissue Password: #输入密码后能出现下面内容说明用户没有问题 +------------+---------------------------------------------------------------------------------------+ |Field|Value| +------------+---------------------------------------------------------------------------------------+ |expires|2016-12-2811:05:46+00:00| | id |gAAAAABYY456xFHiZSMnQ7x88FxUJjuu3uO8xRLh_soTSgyf3KzMv0nY3s4wn1diFlJ7d2qjPub0iftlOKUnZ| ||z9QYPMUGhfxguZhEHWQtufNQNxZD9r8ekluU0XjCdrdnBU-fs3IM6EmJt3O1Sl-| ||Nw4G40uh0xatMkxI6bmrG3fRkCrcLga6Cx4| |project_id|7ae0fb7deb5342d885a07c2c890a1ff4| |user_id|b84c1614b79b40278e02bd6ed034cc6f| +------------+--------------------------------------------------------------------------------------- 创建环境变量脚本: 创建admin变量 1 2 3 4 5 6 7 8 9 [root@linux-node1~] #catadmin-openstack export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=admin export OS_AUTH_URL=http: //192 .168.56.11:35357 /v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2 创建demo变量 1 2 3 4 5 6 7 8 9 [root@linux-node1~] #catdemo-openstack export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=demo export OS_AUTH_URL=http: //192 .168.56.11:5000 /v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2 使环境变量生效: soure demo-openstack Keystone常见错误 1 2 3 4 5 6 401 #验证失败,keystone相关用户账户密码设置错误,时间不同步,或者输入的项目名称不对 403 #可能未初始化OS_token变量,需要使用source命令使其生效,也可能是配置的配置文件未生效,需要重启相关服务 409 #keystone创建用户,用户已存在 500 #服务器内部错误,服务配置有问题,看日志,检查配置 503 #keystone相关账户密码设置有问题,请将相关的glance账户删除,重新创建即可 服务故障 #相关服务没有起来 本文转自 kesungang 51CTO博客,原文链接:http://blog.51cto.com/sgk2011/1887008,如需转载请自行联系原作者

优秀的个人博客,低调大师

2节点CentOS7 PackStack安装Newton

PackStack安装OpenStack最新版本Newton [root@crontroller ~]# vim/etc/hosts 192.168.13.111 controller 192.168.13.112 compute [root@controller yum.repos.d]#yum install centos-release-openstack-newton -y [root@controller ~]# cd /etc/yum.repos.d/ [root@controller yum.repos.d]# ls CentOS-Base.repo CentOS-CR.repo CentOS-fasttrack.repoCentOS-OpenStack-newton.repo CentOS-Sources.repo CentOS-Ceph-Jewel.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-QEMU-EV.repo CentOS-Vault.repo [root@controller yum.repos.d]# yum install openstack-packstack -y [root@crontroller ~]# packstack --gen-answer=openstack-newton-2061018.txt [root@crontroller ~]# vimopenstack-newton-2061018.txt CONFIG_CONTROLLER_HOST=192.168.13.111 CONFIG_COMPUTE_HOSTS=192.168.13.112 CONFIG_PROVISION_DEMO=n [root@controller ~]#packstack --answer-file=openstack-newton-20161018.txt The installation log file is available at: /var/tmp/packstack/20161018-032600-v9pLEu/openstack-setup.log Installing: Clean Up [ DONE ] Discovering ip protocol version [ DONE ] Setting up ssh keys [ DONE ] Preparing servers [ DONE ] Pre installing Puppet and discovering hosts' details [ DONE ] Preparing pre-install entries [ DONE ] Setting up CACERT [ DONE ] Preparing AMQP entries [ DONE ] Preparing MariaDB entries [ DONE ] Fixing Keystone LDAP config parameters to be undef if empty[ DONE ] Preparing Keystone entries [ DONE ] Preparing Glance entries [ DONE ] Checking if the Cinder server has a cinder-volumes vg[ DONE ] Preparing Cinder entries [ DONE ] Preparing Nova API entries [ DONE ] Creating ssh keys for Nova migration [ DONE ] Gathering ssh host keys for Nova migration [ DONE ] Preparing Nova Compute entries [ DONE ] Preparing Nova Scheduler entries [ DONE ] Preparing Nova VNC Proxy entries [ DONE ] Preparing OpenStack Network-related Nova entries [ DONE ] Preparing Nova Common entries [ DONE ] Preparing Neutron LBaaS Agent entries [ DONE ] Preparing Neutron API entries [ DONE ] Preparing Neutron L3 entries [ DONE ] Preparing Neutron L2 Agent entries [ DONE ] Preparing Neutron DHCP Agent entries [ DONE ] Preparing Neutron Metering Agent entries [ DONE ] Checking if NetworkManager is enabled and running [ DONE ] Preparing OpenStack Client entries [ DONE ] Preparing Horizon entries [ DONE ] Preparing Swift builder entries [ DONE ] Preparing Swift proxy entries [ DONE ] Preparing Swift storage entries [ DONE ] Preparing Heat entries [ DONE ] Preparing Heat CloudFormation API entries [ DONE ] Preparing MongoDB entries [ DONE ] Preparing Redis entries [ DONE ] Preparing Ceilometer entries [ DONE ] Preparing Aodh entries [ DONE ] Preparing Sahara entries [ DONE ] Preparing Nagios server entries [ DONE ] Preparing Nagios host entries [ DONE ] Preparing Puppet manifests [ DONE ] Copying Puppet modules and manifests [ DONE ] Applying 192.168.13.111_controller.pp 192.168.13.111_controller.pp: [ DONE ] Applying 192.168.13.111_network.pp 192.168.13.111_network.pp: [ DONE ] Applying 192.168.13.112_compute.pp 192.168.13.112_compute.pp: [ DONE ] Applying Puppet manifests [ DONE ] Finalizing [ DONE ] **** 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 192.168.13.111. To use the command line tools you need to source the file. * To access the OpenStack Dashboard browse tohttp://192.168.13.111/dashboard . Please, find your login credentials stored in the keystonerc_admin in your home directory. * To use Nagios, browse tohttp://192.168.13.111/nagiosusername: nagiosadmin, password: 3a3955d4765044e8 * The installation log file is available at: /var/tmp/packstack/20161018-032600-v9pLEu/openstack-setup.log * The generated manifests are available at: /var/tmp/packstack/20161018-032600-v9pLEu/manifests You have mail in /var/spool/mail/root [root@controller ~(keystone_admin)]# openstack service list +----------------------------------+------------+-----------------+ | ID | Name | Type | +----------------------------------+------------+-----------------+ | 286a239647284235a2d3cc9147437254 | heat | orchestration | | 2a117f7dcb6c4c8fbfa014a5f8326bf8 | cinder | volume | | 350da74d69b54c858998952486234509 | manilav2 | sharev2 | | 3660afe3906f4f1ebdb98589e50f8211 | cinderv3 | volumev3 | | 4c96091e17e945e2a6e27f65d4d6feac | neutron | network | | 5d70f4767d2b4e90bde59fd384ce386a | keystone | identity | | 8bf3c2e53a86421da38909f6b40780ae | manila | share | | 8ef87dedae0544ac96c156cd66cd0afc | aodh | alarming | | 9627f0c7d2a54e2ca86372ce18181e2f | nova | compute | | 988cb4ca952e4e82a14eaf3cfe6656f8 | cinderv2 | volumev2 | | aa1a52506e1140289d3137e142c90798 | trove | database | | b2eb0ba2d20944e5b40f243be6bc59ef | ceilometer | metering | | bc429bc6b4f0494fb5b14d2a8792f453 | sahara | data-processing | | d387736abf0643c2bd6fa1783cf7b6dd | heat-cfn | cloudformation | | dc249c4c91154a788018c13f49c8412e | glance | image | | e35245e5f3f84655b9ddfea9d90e24b7 | swift | object-store | +----------------------------------+------------+-----------------+ 本文转自 OpenStack2015 博客,原文链接: http://blog.51cto.com/andyliu/1863314 如需转载请自行联系原作者

优秀的个人博客,低调大师

版本动态 | Apache Linkis 1.5.0 版本发布

Apache Linkis 1.5.0版本已经发布,非常感谢社区各位成员对 1.5.0版本的贡献和付出。 本次版本是一个大版本,新增了多个社区期待已久的特性,如:注册中心支持切换Nacos、新增Hbase、Nabula、repl等多个引擎、新增SPARK引擎插件支持 on Yarn Cluster模式、SPARK和Flink引擎插件支持 on k8s提交Jar任务等功能特性,并修复了多个已知问题。 详情请查看 Apache Linkis 官方1.5.0的版本信息: https://linkis.apache.org/zh-CN/download/release-notes-1.5.0 ApacheLinkis1.5.0版本简介 ●注册中心支持将Eureka切换为Nacos ●新增Hbase引擎插件,支持Hbase-shell全部语法并兼容多版本 ●新增Nebula引擎插件 ●新增Repl解释器引擎插件,支持运行Java和Scala代码片段 ●支持SparkEConk8s提交jar和Pyspark任务 ●支持FlinkEConk8s提交jar任务 ●Spark引擎插件支持onyarncluster运行模式 ●LinkisJDBCdriver支持多引擎多版本的选择 ●基础数据管理增加配置项管理,支持管理员管理各个引擎插件的配置项 ●管理台增加运维工具,并新加入了用户配置管理,支持管理员调整用户配置和模版管理 ●【实验性】Entrance支持任务接管,可以做到Entrance无状态 缩写: ●COMMON:LinkisCommon ●ENTRANCE:LinkisEntrance ●EC:EngineConn ●ECM:EngineConnManager ●ECP:EngineConnPlugin ●DMS:DataSourceManagerService ●MDS:MetaDataManagerService ●LM:LinkisManager ●PS:LinkisPublicService ●PE:LinkisPublicEnhancement ●RPC:LinkisCommonRPC ●CG:LinkisComputationGovernance ●DEPLOY:LinkisDeployment ●WEB:LinkisWeb ●GATEWAY:LinkisGateway ●EP:EnginePlugin 新特性 ●[EC]LINKIS-5008注册中心支持Nacos ●[GATEWAY]LINKIS-4992Gateway支持访问控制配置 ●[EC-REPL]LINKIS-4937新增Repl解释器引擎插件,支持执行scala和Java代码 ●[EC-NEBULA]LINKIS-4903新增nebula引擎插件 ●[EC-HBASE]LINKIS-4891新增Hbase引擎插件 ●[EC-SPARK]LINKIS-4850SPARK引擎插件支持OnYarnCluster运行 ●[EC-SPARK]LINKIS-4867SPARK引擎插件支持提交Jar任务onk8s ●[EC-SPARK]LINKIS-4906SPARK引擎插件支持提交pysparkjobonk8s ●[JDBC-DRIVER]LINKIS-4930JDBCDriver支持引擎多版本 ●[EC-FLINK]LINKIS-4753Flink引擎插件升级为1.16.2并兼容多版本 ●[ENTRANCE]LINKIS-4282实验性:Entrance服务支持HA ●[MONITOR]LINKIS-4905实验性:新增Linkis Monitor服务 ●[WEB]LINKIS-4940实验性:管理台前端新架构升级 功能增强 ●[ECM]LINKIS-4990支持管理台下载EC的日志文件 ●[EC]LINKIS-4982EC指标丰富增加锁空闲等时间指标 ●[WEB]LINKIS-4954管理台增加用户配置管理页面 ●[EC-SPARK]LINKIS-4961Pyspark新增更多的默认classimport ●[EC-PYTHON]LINKIS-4835Python引擎插件优化打印,错误信息打印优化 ●[EC-SPARK]LINKIS-4896SPARKOnce任务支持EngineConnRuntimeMode标签配置 ●[LM]LINKIS-4914LM资源排序选择规则优化为从按大到小 ●[WEB]LINKIS-4935管理台支持配置spark.conf参数,支持配置多个SPARK的原生参数 ●[EC]LINKIS-4714EC支持指定Debug端口范围 ●[EC-FLINK]LINKIS-5023Flink引擎插件支持读取用户自定义的log4j配置 ●[PES]LINKIS-4838文件读取和写入接口支持更多参数和操作 ●[LM]LINKIS-4850LM支持管理K8s资源 ●[PE]LINKIS-4847优化模块数合并公共数据源模块 ●[PE]LINKIS-4853优化模块数合并公共客户端模块为pes-client模块 ●[PE]LINKIS-4854优化模块数合并公共服务的多个模块 ●[PE]LINKIS-4934数据源服务支持合并和单独部署 ●[EC-FLINK]LINKIS-5025Flink引擎插件支持加载默认配置 ●[EC-JDBC]LINKIS-5007JDBC引擎插件支持多任务间的任务串联 修复功能 ●[EC-Flink]LINKIS-5041修复交互式FlinkSQL打印状态获取错误日志问题 ●[MDS]LINKIS-4998ES数据源兼容6.X和7.X ●[EC-SPARK]LINKIS-4996SPARK引擎插件Scala任务支持将错误信息打印到任务日志中 ●[ENTRANCE]LINKIS-4967修复SQL解析comment中带有分号导致的解析错误 ●[EC]LINKIS-4920修复结果集null返回为字符串NULL问题 ●[CLI]LINKIS-4919Client修复并发的NPE问题 ●[CG]LINKIS-4915修复LM的ECM选择逻辑存在错误选择负载高的问题 ●[LM]LINKIS-4860修复linkis-httpclientpost接口中文乱码问题 ●[LM]LINKIS-4771Linkis-Clioncejob提交应该为Once模式 ●[LM]LINKIS-4731KillEC脚本应该去跳过ECM的进程 详细指引 ●本版本总览:https://linkis.apache.org/zh-CN/download/release-notes-1.5.0 ●详细安装部署见指引:https://linkis.apache.org/zh-CN/docs/latest/deployment/deploy-quick ●官方下载链接:https://linkis.apache.org/zh-CN/download/main 社区贡献者 Apache Linkis 1.5.0的发布离不开 Linkis 社区的贡献者,感谢所有的社区贡献者,包括但不仅限于以下 Contributors(排名不分先后):

优秀的个人博客,低调大师

项目动态|Apache Pulsar 2.7.3 版本介绍

本文原文作者是 StreamNative 工程师丛搏、刘昱。译者刘梓霖,传智教育工程师。 关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。GitHub 地址:http://github.com/apache/pulsar/ 近期,Apache Pulsar 社区发布了 Pulsar 2.7.3 版本!新版本涵盖 32 位贡献者提供的改进和错误修复,并提交了 79 次变更。 版本亮点: •游标读取遵循调度字节率限制器的设置,不会再导致意外的结果。[1]•Ledger 滚动任务按预期执行。[2] 本博客介绍了 2.7.3 版本最值得关注的进展,如需了解所有性能升级和 bug 修复的完整列表,请查阅Pulsar 2.7.3 发布注记[3]。 Bug 修复和性能升级 Broker PR-9826[4]:游标读取遵循调度字节率限制器的限制。 问题:无论是命名空间还是主题策略在限制分发速率时都未考虑使用字节速率限制。 解决方案:修复了调度字节速率限制器设置的行为。游标读取会遵循此设置并且不会在导致意外的结果。 PR-11226[5]:Ledger 滚动计划任务按照预期执行。 问题:在此 PR 之前,ledger 在达到最大滚动时间之前执行滚动任务,导致 ledger 不能及时滚动。 解决方案:修复 ledger 滚动调度的时间,任务只能在 ledger 成功创建之后运行。 PR-11136[6]:在重启 broker 时,主题级别的保留策略能正常工作。 问题:在此 PR 之前,当为一个 topic 设置 topic 级保留策略然后重启 broker 时,该 topic 级别的保留策略不生效。 解决方案:修正了此策略的行为,使其在启动policyCacheInitMap后重放所有策略消息,并在重新启动 broker 时添加了保留策略检查测试。 PR-10977[7]:调用 lastMessageId API 不会再导致内存泄露。 问题:在此 PR 之前,调用lastMessageIdAPI 时存在内存泄露,导致 broker 进程被 Kubernetes 停止。 解决方案:为PersistentTopic.getLastMessageId增加了缺失的 entry.release() 调用,以确保 broker 不会耗尽内存。 PR-10594[8]:ZooKeeper 读取由 broker 缓存。 问题:当执行管理操作以获取租户的命名空间时,是 ZooKeeper 使用在 ZooKeeper 客户端读取的, 而不是从broker 缓存中读取。 解决方案:修复 ZooKeeper 在为租户获取命名空间列表时的缓存问题。 PR-10512[9]:调用LeaderService.isLeader()的监控线程不再被阻塞。 问题:当LeaderService改变为 leadership 状态时,会被一个synchronized块锁定,这也阻止了其他线程调用LeaderService.isLeader()。 解决方案:通过修改ClusterServiceCoordinator和WorkerStatsManager以检查其是否来自MembershipManager的 leader ,修复了监控线程的死锁条件,使其不被LeaderService.isLeader()阻塞。 PR-10414[10]:hasMessageAvailable可以成功读取消息。 问题:因消息被acknowledgmentsGroupingTracker过滤,当hasMessageAvailableAsync返回true时无法读取消息。 解决方案:通过修改acknowledgmentsGroupingTracker过滤重复消息,并在之后连接打开时清理消息来修复竞争条件。 Proxy PR-8048[11]:Proxy 支持自动创建分区 topic。 问题:Proxy 因使用的是当前的 ZooKeeper 元数据而没有创建分区。 解决方案:通过从可用 broker 中选择和获取,而不是使用当前的 ZooKeeper 元数据来更改 proxy 以处理PartitionMetadataRequest。 Pulsar admin PR-11140[12]:增加标识来表明是否在复制的集群上创建元数据路径。 问题:在复制的命名空间上创建分区 topic时,没有在复制的集群上创建元数据路径/managed-ledgers。 解决方案:增加了一个标识(createLocalTopicOnly),用来表明是否为复制集群中的分区 topic 创建元数据路径。 PR-11131[13]:禁止为不存在的 topic 设置策略。 问题:由于 topic 策略中存在重定向循环,用户可以为不存在的 topic 或者已分区的 topic 设置策略。 解决方案:此项修复为 topic 策略增加了一个权威标识,以避免重定向循环。用户无法为不存在的 topic 或单分区 topic 的分区设置 topic策略。如果你为 0 分区 topic 的分区设置策略,它会重定向到 broker 。 PR-10806[14]:服务发现不再将 topic 硬编码为持久性。 问题:当对分区的非持久 topic 使用查找服务发现时,就会返回 0 而不是分区数。Pulsar 客户端会以连接普通 topic 的方式尝试连接到该 topic。 解决方案:实现topicName.getDomain().value()而不是硬编码persistent。现在用户可以成功地对一个分区的非持久 topic 使用服务发现。 PR-10744[15]:其他连接器现在可以使用 KinesisBackoff类 问题:Pulsar 客户端实现项目中的 Kinesis sink 连接器Backoff类结合依赖org.apache.pulsar:pulsar-client-original增加了连接器的大小。 解决方案:在函数 io-core 项目中增加了一个新的类Backoff,以便 Kinesis sink 连接器和其他连接器可以使用此类。 客户端 PR-10506[16]:无法发送许可为零的FLOW请求。 问题:当 broker 接收到一个零许可的FLOW请求时,会抛出异常并且关闭连接。这会引发频繁的重连,并导致重复或者乱序的消息。 解决方案:增加了一个在发送FLOW请求之前验证其许可的验证功能,如果请求是零许可,则不能发送FLOW请求。 函数和连接器 PR-10769[17]:Kinesis sink 连接器确认成功的消息。 问题:Kinesis sink 连接器在发送成功后没有确认消息。 解决方案:为 Kinesis sink 连接器增加了消息发送成功后的确认。 Docker PR-10531[18]:在使用 Kubernetes 运行时,Function 名称不能超过 52 个字符。 问题:当使用 Kubernetes 运行时,如果提交的 function 长度有效(小于 55 个字符),就会创建一个无法产生 pod 的 StatefulSet。 解决方案:将 Kubernetes 运行时的 function 名称的最大长度从 55 个字符改为 53 个字符。通过这一修复, function 名字的长度不能超过 52 个字符。 依赖 PR-10907[19]:启动 TLS 后,pulsar-admin与 proxy 的连接稳定了。 问题:因为 Jetty 9.4.39 中引入了 SSL 缓存的错误,pulsar-admin在 TLS 连接中不稳定,,导致大型 function jar 包上传频繁失败。 解决方案:将 Jetty 升级到 9.4.42.v20210604,这样当启用 TLS 时,pulsar-admin与 proxy 的连接是最稳定的。 参与其中 新版本使用 欢迎大家下载[20]并使用新版本!如果在使用中遇到问题,可以通过提 issue[21]或在微信群交流的方式抛出疑问并与社区交流。 加入 Apache Pulsar 社区 Pulsar 项目的成长来源于社区,也扎根于社区。一次次新版本的筹备与发布离不开社区伙伴们的贡献。你是否愿意成为其中的一员呢? 参与开源,可以获得公司及社区内外的认可,结交来自各个领域、志同道合的小伙伴;同时也可以提高个人影响力,促进个人发展。参与开源不是码农的专属,社区、文档等各个方面都可以让大家发挥一技之长。 作为全球性开源项目,截至目前,Apache Pulsar 已拥有 435 名贡献者、9.4K+ Star 、2.3 K+ Fork 。我们为大家提供了参与指南,欢迎越来越多的小伙伴助力 Apache Pulsar 项目的不断发展与前进。 •Apache Pulsar 官方贡献指南[22] •加入 Apache Pulsar 志愿者大家庭 译者信息 Hi~ 我叫刘梓霖,一名会 code 的斜杠青年 ~ 推荐阅读 •Pulsar 2.8.0 新增特性概览:独占 Producer、事务等•Apache Pulsar 2.7.1 版本正式发布! 引用链接 [1]游标读取遵循调度字节率限制器的设置,不会再导致意外的结果。:https://github.com/apache/pulsar/pull/11249 [2]Ledger 滚动任务按预期执行。:https://github.com/apache/pulsar/pull/11226 [3]Pulsar 2.7.3 发布注记:https://pulsar.apache.org/en/release-notes/ [4]PR-9826:https://github.com/apache/pulsar/pull/9826 [5]PR-11226:https://github.com/apache/pulsar/pull/11226 [6]PR-11136:https://github.com/apache/pulsar/pull/11136 [7]PR-10977:https://github.com/apache/pulsar/pull/10977 [8]PR-10594:https://github.com/apache/pulsar/pull/10594 [9]PR-10512:https://github.com/apache/pulsar/pull/10512 [10]PR-10414:https://github.com/apache/pulsar/pull/10414 [11]PR-8048:https://github.com/apache/pulsar/pull/8048 [12]PR-11140:https://github.com/apache/pulsar/pull/11140 [13]PR-11131:https://github.com/apache/pulsar/pull/11131 [14]PR-10806:https://github.com/apache/pulsar/pull/10806 [15]PR-10744:https://github.com/apache/pulsar/pull/10744 [16]PR-10506:https://github.com/apache/pulsar/pull/10506 [17]PR-10769:https://github.com/apache/pulsar/pull/10769 [18]PR-10531:https://github.com/apache/pulsar/pull/10531 [19]PR-10907:https://github.com/apache/pulsar/pull/10907 [20]下载:https://pulsar.apache.org/en/download/ [21]提 issue:https://github.com/apache/pulsar/issues [22]Apache Pulsar 官方贡献指南:http://pulsar.apache.org/en/contributing/

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册