zoukankan      html  css  js  c++  java
  • openstack 的安装和部署

    1.什么是云计算

    1:什么是云计算?

    云计算是通过虚拟化技术去实现的,它是一种按量付费的模式!
    

    2:为什么要用云计算?

    小公司:1年,20人+,500w,招一个运维,15k,(10台*1.5w,托管IDC机房,8k/年,带宽 100M,5个公网ip, 10k/月),  买10台云主机,600*10=6000
    大公司:举行活动,加集群,把闲置时间出租,超卖(kvm)
    16G,kvm,64G(ksm),金牌用户(200w+/月)
    

    3:云计算有哪些功能?虚拟机的管理平台(计费)

    kvm:1000宿主机(agent),虚拟出2w虚拟机,
    虚拟机的详细情况:硬件资源,ip情况统计?
    虚拟机管理平台:每台虚拟机的管理,都用数据库来统计
    

    4:云计算的服务类型

    IAAS  基础设施即服务 ECS云主机 自己部署环境,自己管理代码和数据
    infrastructure as an service 
    
    PAAS(docker) 平台即服务 提供软件的运行环境,java ,python,go, c#,nodejs 自己管理代码和数据
    platfrom as an service
    SAAS   软件即服务 企业邮箱,cdn,rds
    software as an service
    openstack实现的是云计算IAAS,开源的云计算平台,apache 2.0,阿里云(飞天云平台)
    
    2.openstack (soa架构)
    云平台
    (keystone认证服务,glance镜像服务,nova计算服务,neutron网络服务,cinder存储服务,horizon web界面)
    
    每个服务:数据库,消息队列,memcached缓存,时间同步
    首页www.jf.com/index.html
    秒杀www.jd.com/miaosha/index.html
    会员:www.jd.com/plus/index.html
    登录:www.jd.com/login/index
    
    
    
    
    
    
    nginx+php +mysql(500张表)
    SOA(拆业务,把每一个功能都拆成一个独立的web服务,每一个独立的web服务,至少拥有一个集群)
    
    微服务架构: 亿级用户
    开源的微服框架
    阿里开源的dubbo 
    spring boot
    
    
    自动化代码上线 Jenkins + gitlab ci
    自动化代码质量检查 sonarqube
    
    
    
    

    官网:https://docs.openstack.org/train/

    openstack 版本

    A-Z 开头
    
    3.虚拟机规划
    controller:内存3G,cpu开启虚拟化,ip:10.0.0.11
    compute01: 内存1G,cpu开启虚拟化(必开),ip:10.0.0.31
    
    host解析,
    
    
    [root@controller ~]# vim /etc/hosts
    
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    10.0.0.11 controller
    10.0.0.31 computer1
    
    [root@controller ~]# scp -rp /etc/hosts 10.0.0.31 /etc/hosts
    
    
    
    4.配置yum源

    1.挂载光盘

    [root@computer1 ~]# mount /dev/cdrom /mnt
    mount: /dev/sr0 is write-protected, mounting read-only
    [root@controller ~]# mount /dev/cdrom /mnt
    mount: /dev/sr0 is write-protected, mounting read-only
    
    
    #查看 (如果有内容代表挂载成功)
    [root@computer1 ~]# ll /mnt
    total 686
    -rw-rw-r-- 1 root root     14 Nov 26  2018 CentOS_BuildTag
    drwxr-xr-x 3 root root   2048 Nov 26  2018 EFI
    -rw-rw-r-- 1 root root    227 Aug 30  2017 EULA
    -rw-rw-r-- 1 root root  18009 Dec 10  2015 GPL
    drwxr-xr-x 3 root root   2048 Nov 26  2018 images
    drwxr-xr-x 2 root root   2048 Nov 26  2018 isolinux
    drwxr-xr-x 2 root root   2048 Nov 26  2018 LiveOS
    drwxrwxr-x 2 root root 663552 Nov 26  2018 Packages
    drwxrwxr-x 2 root root   4096 Nov 26  2018 repodata
    -rw-rw-r-- 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
    -rw-rw-r-- 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r-- 1 root root   2883 Nov 26  2018 TRANS.TBL
    
    [root@controller ~]# scp -rp openstack_rpm.tar.gz 10.0.0.31:/opt
    
    rz 上传openstack_rpm.tar.gz到/opt,并解压
    生成repo配置文件
    
    
    
    root@controller opt]# vim/etc/yum.repos.d/local.repo
    [local]
    name=local
    baseurl=file:///mnt
    gpgcheck=0
    
    [openstack]
    name=openstack
    baseurl=file:///opt/repo
    gpgcheck=0
    
    root@controller opt]#echo  'mount /dev/cdrom /mnt' >>/etc/rc.local
    root@controller opt]# chmod +x /etc/rc.d/rc.local
    
    [root@controller opt]# scp -rp /etc/yum.repos.d/local.repo 10.0.0.31:/etc/yum.repos.d/local.repo
    [root@computer1 opt]# vim /etc/yum.repos.d/local.repo
    
    [root@computer1 opt]# echo  'mount /dev/cdrom /mnt' >>/etc/rc.local
    
    [root@computer1 opt]# chmod +x /etc/rc.d/rc.local
    
    
    #注意:两台都要配
    
    

    2.安装基础服务

    在所有节点上执行:
    a:时间同步
    [root@controller opt]# yum install -y chrony
    [root@computer1 opt]#  yum install -y chrony
    
    
    #编辑控制节点配置文件
    [root@controller opt]# vim /etc/chrony.conf 
    
    1.
    将 server 1.centos.pool.ntp.org iburst 改成
    server ntp6.aliyun.com iburst
    
    
    另三行删掉
    
    2.将 #allow 192.168.0.0/1改成
    allow 10.0.0.0/24
    #重启服务
    [root@controller opt]# vim /etc/chrony.conf 
     systemctl restart chronyd
    
    
    #编辑计算节点
    [root@computer1 opt]# vim /etc/chrony.conf 
    将 server 1.centos.pool.ntp.org iburst 改成
    server 10.0.0.11 iburst
    另三行删掉
    [root@computer1 opt]# systemctl restart chronyd
    
    
    

    5.安装openstack客户端和openstack-selinux
    1.在所有节点上执行
    [root@control ~]# yum install python-openstackclient openstack-selinux -y 
    
    [root@computer1 ~]# yum install python-openstackclient openstack-selinux -y
    
    

    查看官方文档

    6.安装数据库以及安全初始化
    2.仅控制节点执行:
    [root@control ~]# yum install mariadb mariadb-server python2-PyMySQL -y
    
    
    在官方文档上有 
    
    https://docs.openstack.org/mitaka/zh_CN/install-guide-obs/environment-sql-database.html
    
    
    3.创建并编辑 /etc/my.cnf.d/openstack.cnf
    [root@control ~]# cat /etc/my.cnf.d/openstack.cnf
    [mysqld]
    bind-address = 10.0.0.11          # 值为控制节点的管理网络IP地址以使得其它节点可以通过管理网络访问数据库
    default-storage-engine = innodb   #默认存储引擎
    innodb_file_per_table             #为每个表独立表空间文件     
    max_connections = 4096             #最大连接数
    collation-server = utf8_general_ci  # 默认字符集
    character-set-server = utf8 
    
    
    
    4.启动mariadb 并加入开机自启
    [root@control ~]# systemctl start mariadb
    [root@control ~]# systemctl enable mariadb
    
     
    5. 为了保证数据库服务的安全性,运行
    
    [root@control ~]# mysql_secure_installation       一定要执行要不然后面时间同步会有坑
    
    
    脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码。
     
     
     
     回车
     #需要输入当前root用户的密码,这里我们是空,就直接回车就可以了
     Enter current password for root (enter for none):  
    #设置数据库的密码 ,这里我不想设置 选择n
    Set root password? [Y/n] 
    #移除地址用户 选择yes
    Remove anonymous users? [Y/n] Y
    #禁止root远程登录 选择Y
    Disallow root login remotely? [Y/n] Y
    #移除data的数据库和访问他的权限 选择 y
    Remove test database and access to it? [Y/n] y
    #重载权限表 选择 y
    Reload privilege tables now? [Y/n]  y
    
    7.消息队列
    OpenStack 使用 message queue 协调操作和各服务的状态信息。消息队列服务一般运行在控制节点上。OpenStack支持好几种消息队列服务包括 RabbitMQ, Qpid, 和 ZeroMQ。不过,大多数发行版本的OpenStack包支持特定的消息队列服务。本指南安装 RabbitMQ 消息队列服务,因为大部分发行版本都支持它。如果你想安装不同的消息队列服务,查询与之相关的文档。
    
    就是把所有功能拆成 独立的服务,服务跟服务之间就涉及到调用的问题,这时就要通过消息队列进行(类似一个中介
    
    
    
    
    1.安装rabbitmq并创建用户  
    [root@control ~]# yum  install rabbitmq-server -y
    2.启动消息队列服务并将其配置为随系统启动
    
    [root@control ~]# systemctl enable rabbitmq-server.service
    
    [root@control ~]# systemctl start rabbitmq-server.service
    
    3.添加 openstack 用户:
    [root@control ~]# rabbitmqctl add_user openstack RABBIT_PASS
    Creating user "openstack" ...
    
    4.给openstack用户配置写和读权限
    [root@control ~]#  rabbitmqctl set_permissions openstack ".*" ".*" ".*"
    
    Setting permissions for user "openstack" in vhost "/" ...
    
    5.查看端口
    
    [root@control ~]# netstat -lntup |grep 5672
    tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      10118/beam          
    tcp6       0      0 :::5672                 :::*                    LISTEN      10118/beam          
    6. 弄一个插件
    [root@control ~]# rabbitmq-plugins enable rabbitmq_management
    
    查看端口发现多一个15672
    [root@control ~]# netstat -lntup |grep 5672
    tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      10118/beam          
    tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      10118/beam          
    tcp6       0      0 :::5672                 :::*                    LISTEN      10118/beam          
    
    
    

    访问一下

    http://10.0.0.11:15672/

    默认用户:guest

    默认密码:guest

    8.Memcached
    认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全。
    
    
    1.安装软件
    [root@control ~]# yum  install memcached python-python-memcached -y
    
    
    2.修改配置文件    这一条在M版本的官方文档没有,但在o 版本的有
    [root@control ~]# sed -i 's#127.0.0.1#10.0.0.11#g' /etc/sysconfig/memcached 
    
    3.启动Memcached服务,并且配置它随机启动。
    [root@control ~]# systemctl enable memcached.service
    
    [root@control ~]# systemctl start memcached.service
    
    4.查看端口
    [root@control ~]# netstat -lntup |grep 11211
    tcp        0      0 10.0.0.11:11211         0.0.0.0:*               LISTEN      11095/memcached     
    tcp6       0      0 ::1:11211               :::*                    LISTEN      11095/memcached     
    udp        0      0 10.0.0.11:11211         0.0.0.0:*                           11095/memcached     
    udp6       0      0 ::1:11211               :::*                                11095/memcached     
    
    
    
    
    Horizon 是一个 dashboard 就是一个控制面板
    
    Celiometer 是一个监控计费
    像快照,配置都要计费的
    
    Keystone 是一个登录认证
    
    
    像有些网站都是qq登录 或者微信登录
    Heat 是一个编排服务(playbook) 
    就是通过定义剧本 来批量启动一系列的虚拟机,然后一键实现一个集群的搭建(利用ansible 来执行)
    
    
    swift  是一个对象存储
    就是用户的东西不在是存在某一个目录下面,因为传统的目录下没有数据库,而swift (对象存储 )就专门建一个数据库
    把每一个文件当成一个记录对象,而不是目录级别的,就是一个文件变成数据库里的一条记录。
    

    img

  • 相关阅读:
    第五章 kubernetes常见故障排错
    第二十五章 Centos7下二进制安装Mysql-5.7.34
    第二十四章 MySQL导入数据常见报错解决
    第二十三章 Centos7 下 Mysql 8.0.24编译安装
    第二十二章 Centos7下 Mysql 8.0.24 二进制安装
    第二十一章 MySQL数据库优化
    Sqoop导入数据到mysql数据库报错:ERROR tool.ExportTool: Error during export: Export job failed!
    python读取csv、excel、mysql内容
    WTF表单验证
    Flask_WTF实现表单
  • 原文地址:https://www.cnblogs.com/223zhp/p/12125432.html
Copyright © 2011-2022 走看看