首页
AI导航
美图
服务
付费
树洞
留言
云主机
推荐
邻居
更多
我的书单
我的足迹
罗盘时钟
圈小猫
工作打分
本站统计
版本历史
推荐
txt阅读器
主机监控
M商城
网址导航
在线工具
证件照制作
Search
1
docker和docker-compose一键安装脚本
824 阅读
2
docker下运行grafana和grafana Image Renderer
664 阅读
3
grafana的Dashboard面板添加阈值报警
632 阅读
4
WooCommerce对接第三方支付插件开发
503 阅读
5
基于docker的部署fecmall开源电商系统
442 阅读
ChatGPT
虚拟化
数据库
运维
基础知识
监控预警
数据展示
运维工具
web安全
系统服务
开发
python
php
java
shell
go
html5
项目
博客
电商
工具
娱乐
影视
读书
读书笔记
综合
VPS报告
规范文档
知识总结
经验分享
关于本站
登录
Search
标签搜索
python
django
电商平台
运维工具
Joe主题
docker
zabbix
蓝鲸智云
运维
监控
typecho
grafana
wordpress
运维知识
mysql
php
elk
nginx
web安全
VPS测试
IT不难
累计撰写
245
篇文章
累计收到
209
条评论
首页
栏目
ChatGPT
虚拟化
数据库
运维
基础知识
监控预警
数据展示
运维工具
web安全
系统服务
开发
python
php
java
shell
go
html5
项目
博客
电商
工具
娱乐
影视
读书
读书笔记
综合
VPS报告
规范文档
知识总结
经验分享
关于本站
页面
美图
服务
留言
邻居
我的足迹
本站统计
版本历史
推荐
M商城
网址导航
搜索到
14
篇与
的结果
2023-02-28
docker编译php5.6
DockerfileFROM php:5.6-fpm RUN usermod -u 1010 www-data COPY sources.list /etc/apt/sources.list RUN apt-get update \ # 相关依赖必须手动安装 && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libmcrypt-dev \ libpng-dev \ libzip-dev \ # 安装扩展 && docker-php-ext-configure gd --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr \ && docker-php-ext-install -j$(nproc) gd iconv \ && docker-php-ext-install -j$(nproc) mysqli \ && docker-php-ext-install -j$(nproc) zip \ && docker-php-ext-install -j$(nproc) pdo pdo_mysql RUN apt-get purge -y g++ \ && apt-get autoremove -y \ && rm -r /var/lib/apt/lists/* \ && rm -rf /tmp/* #COPY composer.phar /usr/local/bin/composer #RUN chmod +x /usr/local/bin/composer RUN usermod -u 1010 www-data EXPOSE 9000 CMD ["php-fpm"]sources.list# 原始镜像 #deb http://deb.debian.org/debian bullseye main #deb http://security.debian.org/debian-security bullseye-security main #deb http://deb.debian.org/debian bullseye-updates main # 阿里云 deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib deb-src http://mirrors.aliyun.com/debian/ stretch main non-free contrib deb http://mirrors.aliyun.com/debian-security stretch/updates main deb-src http://mirrors.aliyun.com/debian-security stretch/updates main deb http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib deb-src http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib deb http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib deb-src http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib
2023年02月28日
10 阅读
0 评论
0 点赞
2023-02-16
构建ChromeDriver+chrome的python运行镜像
说明{callout color="#f0ad4e"}feapder爬虫运行需要chrome环境的镜像,作者给的镜像加了自己的加密代码。应该是和自己的爬虫管理系统FEAPLAT配合使用。自己构建了一个feapder运行需要的环境镜像。{/callout}DockerfileFROM selenium/standalone-chrome:latest # Update COPY sources.list /etc/apt/sources.list RUN sudo apt-get update RUN sudo apt-get -y upgrade # Set the locale #RUN apt-get install -y locales && locale-gen "en_US.UTF-8" && dpkg-reconfigure -f noninteractive locales #ENV LANG en_US.UTF-8 #ENV LANGUAGE en_US:en #ENV LC_ALL en_US.UTF-8 #ENV PYTHONIOENCODING utf-8 # #RUN echo \ # && echo 'LANG=en_US.UTF-8' >> /etc/environment \ # && echo 'LANGUAGE=en_US:en' >> /etc/environment \ # && echo 'LC_ALL=en_US.UTF-8' >> /etc/environment \ # && echo 'PYTHONIOENCODING=utf-8' >> /etc/environment # Install Python dependencies RUN sudo apt-get install --upgrade -y python3-pip #RUN sudo apt-get install -y build-essential libssl-dev libffi-dev python3-dev #RUN sudo apt-get install -y curl #RUN sudo apt-get install -y unzip # 软连接 RUN sudo ln -s /usr/bin/python3.8 /usr/bin/python # 安装依赖 #RUN sudo pip3 install -r requirements.txt RUN sudo pip3 install -U pip setuptools -i https://mirrors.aliyun.com/pypi/simple/ RUN sudo pip3 install feapder -i https://mirrors.aliyun.com/pypi/simple/ # 目录权限 RUN sudo chmod 777 /usr/local/lib/python3.8/dist-packages/feapder/network/ # 时区 ENV TZ="Asia/Shanghai"sources.list{message type="success" content="阿里云的软件源"/}deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse构建docker build . -t python-chrome
2023年02月16日
11 阅读
0 评论
0 点赞
2023-01-20
centos8安装docker和docker-compose
前言centos8安装docker和docker-compose执行命令#配置yum源 mv /etc/yum.repos.d /etc/yum.repos.d.bak mkdir -p /etc/yum.repos.d curl https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo > /etc/yum.repos.d/Centos-vault-8.5.2111.repo curl https://mirrors.aliyun.com/repo/epel-archive-8.repo > /etc/yum.repos.d/epel-archive-8.repo #安装软件 yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm yum install -y docker-ce --allowerasing #启动服务 systemctl enable --now docker.service docker version #安装docker-compose yum -y install epel-release dnf install -y python3 dnf install -y python3-paramiko pip3 install docker-compose #查看版本信息 docker-compose version{card-default label="版本" width="50%"}{/card-default}
2023年01月20日
35 阅读
0 评论
0 点赞
2023-01-10
docker swarm 集群基本使用总结
前言以前自己所有的服务虽然基本都采用docker部署了,但几乎全部都跑在单节点下。这两天折腾一下docker swarm集群。{callout color="#f0ad4e"}Swarm 是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker 资源。Swarm 和 Kubernetes 比较类似,但是更加轻,具有的功能也较 kubernetes 更少一些。{/callout}基本概念swarm:集群的管理和编排、docker可以初始化一个swarm集群,其它节点可以加入。node: docker节点,多个节点就组成了一个网络集群(管理者、工作者)service: 任务,可以在管理阶段或者工作节点来运行,用户访问task: 容器内命令,细节任务基本命令# 初始化 docker swarm init --advertise-addr 172.17.0.10 # 列出节点 docker node ls{card-default label="节点列表" width="90%"}{/card-default}新增工作节点# 提示 docker swarm join-token worker # 内网 docker swarm join --token SWMTKN-1-1lldmlext1qdgob1exh4muuu7t8kulfp7uslf9lkuhrn4r2b92-a7mfibtn3air5tgy1zezq9new 172.17.0.10:2377{card-default label="节点列表" width="90%"}{/card-default}下线节点# 登录到worker docker swarm leave # 主节点执行 docker node rm l17ysf8vtu6kme2iy5ixqv194查看service配置docker service inspect --pretty task_9{card-default label="结果" width="75%"}{/card-default}
2023年01月10日
24 阅读
0 评论
0 点赞
2023-01-04
docker-compose.yml文件详解
Compose和Docker兼容性: Compose 文件格式有3个版本,分别为1, 2.x 和 3.x 目前主流的为 3.x 其支持 docker 1.13.0 及其以上的版本 常用参数: version # 指定 compose 文件的版本 services # 定义所有的 service 信息, services 下面的第一级别的 key 既是一个 service 的名称 build # 指定包含构建上下文的路径, 或作为一个对象,该对象具有 context 和指定的 dockerfile 文件以及 args 参数值 context # context: 指定 Dockerfile 文件所在的路径 dockerfile # dockerfile: 指定 context 指定的目录下面的 Dockerfile 的名称(默认为 Dockerfile) argsz # args: Dockerfile 在 build 过程中需要的参数 (等同于 docker container build --build-arg 的作用) cache_from # v3.2中新增的参数, 指定缓存的镜像列表 (等同于 docker container build --cache_from 的作用) labels # v3.3中新增的参数, 设置镜像的元数据 (等同于 docker container build --labels 的作用) shm_size # v3.5中新增的参数, 设置容器 /dev/shm 分区的大小 (等同于 docker container build --shm-size 的作用) command # 覆盖容器启动后默认执行的命令, 支持 shell 格式和 [] 格式 container_name # 指定容器的名称 (等同于 docker run --name 的作用) deploy # v3 版本以上, 指定与部署和运行服务相关的配置, deploy 部分是 docker stack 使用的, docker stack 依赖 docker swarm endpoint_mode # v3.3 版本中新增的功能, 指定服务暴露的方式 vip # Docker 为该服务分配了一个虚拟 IP(VIP), 作为客户端的访问服务的地址 dnsrr # DNS轮询, Docker 为该服务设置 DNS 条目, 使得服务名称的 DNS 查询返回一个 IP 地址列表, 客户端直接访问其中的一个地址 labels # 指定服务的标签,这些标签仅在服务上设置 mode # 指定 deploy 的模式 global # 每个集群节点都只有一个容器 replicated # 用户可以指定集群中容器的数量(默认) placement # 不知道怎么用 replicas # deploy 的 mode 为 replicated 时, 指定容器副本的数量 resources # 资源限制 limits # 设置容器的资源限制 cpus: "0.5" # 设置该容器最多只能使用 50% 的 CPU memory: 50M # 设置该容器最多只能使用 50M 的内存空间 reservations # 设置为容器预留的系统资源(随时可用) cpus: "0.2" # 为该容器保留 20% 的 CPU memory: 20M # 为该容器保留 20M 的内存空间 restart_policy # 定义容器重启策略, 用于代替 restart 参数 condition # 定义容器重启策略(接受三个参数) none # 不尝试重启 on-failure # 只有当容器内部应用程序出现问题才会重启 any # 无论如何都会尝试重启(默认) delay # 尝试重启的间隔时间(默认为 0s) max_attempts # 尝试重启次数(默认一直尝试重启) window # 检查重启是否成功之前的等待时间(即如果容器启动了, 隔多少秒之后去检测容器是否正常, 默认 0s) update_config # 用于配置滚动更新配置 parallelism # 一次性更新的容器数量 delay # 更新一组容器之间的间隔时间 failure_action # 定义更新失败的策略 continue # 继续更新 rollback # 回滚更新 pause # 暂停更新(默认) monitor # 每次更新后的持续时间以监视更新是否失败(单位: ns|us|ms|s|m|h) (默认为0) max_failure_ratio # 回滚期间容忍的失败率(默认值为0) order # v3.4 版本中新增的参数, 回滚期间的操作顺序 stop-first #旧任务在启动新任务之前停止(默认) start-first #首先启动新任务, 并且正在运行的任务暂时重叠 rollback_config # v3.7 版本中新增的参数, 用于定义在 update_config 更新失败的回滚策略 parallelism # 一次回滚的容器数, 如果设置为0, 则所有容器同时回滚 delay # 每个组回滚之间的时间间隔(默认为0) failure_action # 定义回滚失败的策略 continue # 继续回滚 pause # 暂停回滚 monitor # 每次回滚任务后的持续时间以监视失败(单位: ns|us|ms|s|m|h) (默认为0) max_failure_ratio # 回滚期间容忍的失败率(默认值0) order # 回滚期间的操作顺序 stop-first # 旧任务在启动新任务之前停止(默认) start-first # 首先启动新任务, 并且正在运行的任务暂时重叠 注意: 支持 docker-compose up 和 docker-compose run 但不支持 docker stack deploy 的子选项 security_opt container_name devices tmpfs stop_signal links cgroup_parent network_mode external_links restart build userns_mode sysctls devices # 指定设备映射列表 (等同于 docker run --device 的作用) depends_on # 定义容器启动顺序 (此选项解决了容器之间的依赖关系, 此选项在 v3 版本中 使用 swarm 部署时将忽略该选项) dns # 设置 DNS 地址(等同于 docker run --dns 的作用) dns_search # 设置 DNS 搜索域(等同于 docker run --dns-search 的作用) tmpfs # v2 版本以上, 挂载目录到容器中, 作为容器的临时文件系统(等同于 docker run --tmpfs 的作用, 在使用 swarm 部署时将忽略该选项) entrypoint # 覆盖容器的默认 entrypoint 指令 (等同于 docker run --entrypoint 的作用) env_file # 从指定文件中读取变量设置为容器中的环境变量, 可以是单个值或者一个文件列表, 如果多个文件中的变量重名则后面的变量覆盖前面的变量, environment 的值覆盖 env_file 的值 文件格式: RACK_ENV=development environment # 设置环境变量, environment 的值可以覆盖 env_file 的值 (等同于 docker run --env 的作用) expose # 暴露端口, 但是不能和宿主机建立映射关系, 类似于 Dockerfile 的 EXPOSE 指令 external_links # 连接不在 docker-compose.yml 中定义的容器或者不在 compose 管理的容器(docker run 启动的容器, 在 v3 版本中使用 swarm 部署时将忽略该选项) extra_hosts # 添加 host 记录到容器中的 /etc/hosts 中 (等同于 docker run --add-host 的作用) healthcheck # v2.1 以上版本, 定义容器健康状态检查, 类似于 Dockerfile 的 HEALTHCHECK 指令 test # 检查容器检查状态的命令, 该选项必须是一个字符串或者列表, 第一项必须是 NONE, CMD 或 CMD-SHELL, 如果其是一个字符串则相当于 CMD-SHELL 加该字符串 NONE # 禁用容器的健康状态检测 CMD # test: ["CMD", "curl", "-f", "http://localhost"] CMD-SHELL # test: ["CMD-SHELL", "curl -f http://localhost || exit 1"] 或者 test: curl -f https://localhost || exit 1 interval: 1m30s # 每次检查之间的间隔时间 timeout: 10s # 运行命令的超时时间 retries: 3 # 重试次数 start_period: 40s # v3.4 以上新增的选项, 定义容器启动时间间隔 disable: true # true 或 false, 表示是否禁用健康状态检测和 test: NONE 相同 image # 指定 docker 镜像, 可以是远程仓库镜像、本地镜像 init # v3.7 中新增的参数, true 或 false 表示是否在容器中运行一个 init, 它接收信号并传递给进程 isolation # 隔离容器技术, 在 Linux 中仅支持 default 值 labels # 使用 Docker 标签将元数据添加到容器, 与 Dockerfile 中的 LABELS 类似 links # 链接到其它服务中的容器, 该选项是 docker 历史遗留的选项, 目前已被用户自定义网络名称空间取代, 最终有可能被废弃 (在使用 swarm 部署时将忽略该选项) logging # 设置容器日志服务 driver # 指定日志记录驱动程序, 默认 json-file (等同于 docker run --log-driver 的作用) options # 指定日志的相关参数 (等同于 docker run --log-opt 的作用) max-size # 设置单个日志文件的大小, 当到达这个值后会进行日志滚动操作 max-file # 日志文件保留的数量 network_mode # 指定网络模式 (等同于 docker run --net 的作用, 在使用 swarm 部署时将忽略该选项) networks # 将容器加入指定网络 (等同于 docker network connect 的作用), networks 可以位于 compose 文件顶级键和 services 键的二级键 aliases # 同一网络上的容器可以使用服务名称或别名连接到其中一个服务的容器 ipv4_address # IP V4 格式 ipv6_address # IP V6 格式 pid: 'host' # 共享宿主机的 进程空间(PID) ports # 建立宿主机和容器之间的端口映射关系, ports 支持两种语法格式 security_opt # 为每个容器覆盖默认的标签 (在使用 swarm 部署时将忽略该选项) stop_grace_period # 指定在发送了 SIGTERM 信号之后, 容器等待多少秒之后退出(默认 10s) stop_signal # 指定停止容器发送的信号 (默认为 SIGTERM 相当于 kill PID; SIGKILL 相当于 kill -9 PID; 在使用 swarm 部署时将忽略该选项) sysctls # 设置容器中的内核参数 (在使用 swarm 部署时将忽略该选项) ulimits # 设置容器的 limit userns_mode # 如果Docker守护程序配置了用户名称空间, 则禁用此服务的用户名称空间 (在使用 swarm 部署时将忽略该选项) volumes # 定义容器和宿主机的卷映射关系, 其和 networks 一样可以位于 services 键的二级键和 compose 顶级键, 如果需要跨服务间使用则在顶级键定义, 在 services 中引用 SHORT 语法格式示例: volumes: - /var/lib/mysql # 映射容器内的 /var/lib/mysql 到宿主机的一个随机目录中 - /opt/data:/var/lib/mysql # 映射容器内的 /var/lib/mysql 到宿主机的 /opt/data - ./cache:/tmp/cache # 映射容器内的 /var/lib/mysql 到宿主机 compose 文件所在的位置 - ~/configs:/etc/configs/:ro # 映射容器宿主机的目录到容器中去, 权限只读 - datavolume:/var/lib/mysql # datavolume 为 volumes 顶级键定义的目录, 在此处直接调用 restart # 定义容器重启策略(在使用 swarm 部署时将忽略该选项, 在 swarm 使用 restart_policy 代替 restart) no # 禁止自动重启容器(默认) always # 无论如何容器都会重启 on-failure # 当出现 on-failure 报错时, 容器重新启动 其他选项: domainname, hostname, ipc, mac_address, privileged, read_only, shm_size, stdin_open, tty, user, working_dir 上面这些选项都只接受单个值和 docker run 的对应参数类似 对于值为时间的可接受的值: 2.5s 10s 1m30s 2h32m 5h34m56s 时间单位: us, ms, s, m, h 对于值为大小的可接受的值: 2b 1024kb 2048k 300m 1gb 单位: b, k, m, g 或者 kb, mb, gb networks # 定义 networks 信息 driver # 指定网络模式, 大多数情况下, 它 bridge 于单个主机和 overlay Swarm 上 bridge # Docker 默认使用 bridge 连接单个主机上的网络 overlay # overlay 驱动程序创建一个跨多个节点命名的网络 host # 共享主机网络名称空间(等同于 docker run --net=host) none # 等同于 docker run --net=none driver_opts # v3.2以上版本, 传递给驱动程序的参数, 这些参数取决于驱动程序 attachable # driver 为 overlay 时使用, 如果设置为 true 则除了服务之外,独立容器也可以附加到该网络; 如果独立容器连接到该网络,则它可以与其他 Docker 守护进程连接到的该网络的服务和独立容器进行通信 ipam # 自定义 IPAM 配置. 这是一个具有多个属性的对象, 每个属性都是可选的 driver # IPAM 驱动程序, bridge 或者 default config # 配置项 subnet # CIDR格式的子网,表示该网络的网段 external # 外部网络, 如果设置为 true 则 docker-compose up 不会尝试创建它, 如果它不存在则引发错误 name # v3.5 以上版本, 为此网络设置名称
2023年01月04日
21 阅读
0 评论
0 点赞
2022-12-06
Debian11安装docker和docker-compose
前言{callout color="#f0ad4e"}centos7上的软件版本都比较旧了,尝试一下debian。{/callout}安装docker# 依赖 apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common # 公钥 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 添加源 ## 官方源 echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装 apt-get update -y apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin安装docker-composeexport LATEST_VERSION=$(wget -qO- -t1 -T2 "https://api.github.com/repos/docker/compose/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g') curl -L https://github.com/docker/compose/releases/download/$LATEST_VERSION/docker-compose-linux-`uname -m` > ./docker-compose chmod +x ./docker-compose mv ./docker-compose /usr/local/bin/docker-compose
2022年12月06日
25 阅读
0 评论
0 点赞
2022-08-17
openstack安装部署测试(二)-创建一个实例
前言{callout color="#f0ad4e"}上一篇文章: openstack安装部署测试总结(一) 通过三台服务器将openstack搭建完成,本篇文章记录在搭建好的openstack系统内,创建一个实例。{/callout}通过Dashboard添加镜像{message type="success" content="计算->镜像->创建镜像"/}{card-default label="创建镜像" width="75%"}{/card-default}{card-describe title="命令行查看"}openstack image list glance image-list{/card-describe}{card-default label="结果" width="75%"}{/card-default}通过Dashboard添加卷{message type="success" content="计算->卷->创建卷"/}{card-default label="添加卷" width="75%"}{/card-default}通过命令行创建实例查看可用网络openstack network list创建规格,创建虚拟机时申请的资源大小openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano{card-default label="结果" width="75%"}{/card-default}创建sshkey,可以直接用宿主机的ssh-keygen -q -N "" openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey openstack keypair list{card-default label="结果" width="75%"}{/card-default}向默认安全组default添加规则,允许icmp和ssh访问openstack security group rule create --proto icmp default openstack security group rule create --proto tcp --dst-port 22 default{card-default label="结果" width="80%"}{/card-default}创建实例# 查询可用规则 openstack flavor list # 查询可用镜像 openstack image list # 查询可用网络 openstack network list # 查看可用安全组 openstack security group list # 创建实例 openstack server create --flavor m1.nano --image cirros --nic net-id=04c47a75-2d42-43ed-b8fd-d680ef4edafe --security-group default --key-name mykey provider-instance # 查看实例列表 openstack server list # 查看vnc访问地址 openstack console url show provider-instance{card-default label="查看信息" width="80%"}{/card-default}{card-default label="创建实例" width="95%"}{/card-default}{card-default label="通过控制台查看" width="85%"}{/card-default}通过Dashboard创建实例{message type="success" content="计算->实例->创建实例"/}{card-default label="创建实例" width="75%"}{/card-default}{card-default label="源" width="75%"}{/card-default}{card-default label="实例类型" width="75%"}{/card-default}{card-default label="网络" width="75%"}{/card-default}{card-default label="安全组" width="75%"}{/card-default}{card-default label="密钥" width="75%"}{/card-default}{message type="success" content="设置完成,点击创建即可,比较简单。"/}
2022年08月17日
48 阅读
0 评论
3 点赞
2022-08-13
openstack安装部署测试总结(一)
前言{callout color="#f0ad4e"} openstack和Kubernetes对比 openstack架构说明 openstack的Train版本安装测试过程记录{/callout}{card-default label="openstack后台" width="85%"}{/card-default}准备资源{callout color="#f0ad4e"}准备三台服务器,使用腾讯云竞价实例,购买链接 {/callout}{card-default label="主机配置" width="90%"} {/card-default}{card-describe title="hosts地址"}10.206.0.10 openstack-110.206.0.6 openstack-210.206.0.14 openstack-3{/card-describe}服务器初始化{message type="success" content="三台服务器都要执行"/}#初始化脚本 cd sysinit && sh system_init_v6.sh #设置主机名 hostnamectl set-hostname openstack-1 hostnamectl set-hostname openstack-2 hostnamectl set-hostname openstack-3 #安装openstack软件源 yum install centos-release-openstack-train -y yum install https://rdoproject.org/repos/rdo-release.rpm -y yum upgrade -y yum install python-openstackclient -y初始化脚本下载:隐藏内容,请前往内页查看详情设置环境变量{message type="success" content="提前设置一些密码,通过环境变量的方式提供"/}#生成随机密码 openssl rand -hex 10 #在/etc/profile中设置 export ADMIN_PASS=c08393f3ed64cbca17ec export CINDER_DBPASS=openstack@webzhan.xyz export CINDER_PASS=c08393f3ed64cbca17ec export DASH_DBPASS=c08393f3ed64cbca17ec export DEMO_PASS=c08393f3ed64cbca17ec export GLANCE_DBPASS=openstack@webzhan.xyz export GLANCE_PASS=c08393f3ed64cbca17ec export KEYSTONE_DBPASS=openstack@webzhan.xyz export METADATA_SECRET=c08393f3ed64cbca17ec export NEUTRON_DBPASS=openstack@webzhan.xyz export NEUTRON_PASS=c08393f3ed64cbca17ec export NOVA_DBPASS=openstack@webzhan.xyz export NOVA_PASS=c08393f3ed64cbca17ec export PLACEMENT_PASS=c08393f3ed64cbca17ec export RABBIT_PASS=c08393f3ed64cbca17ec #生效 source /etc/profile安装基础服务{message type="success" content="下面的组件全部安装在openstack-1上"/}安装 MariaDB#安装 yum install -y mariadb mariadb-server #启动 systemctl enable --now mariadb #初始化 mysql_secure_installation安装 RabbitMQ#安装 yum install -y rabbitmq-server #启动 systemctl enable --now rabbitmq-server #添加用户 rabbitmqctl add_user openstack $RABBIT_PASS #授权 rabbitmqctl set_permissions openstack ".*" ".*" ".*"安装 Memcached#安装 yum install -y memcached python-memcached #修改配置,允许外网访问 vim /etc/sysconfig/memcached OPTIONS="" #启动 systemctl enable --now memcached安装 etcd#安装 yum install -y etcd #修改配置 vim /etc/etcd/etcd.conf ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_PEER_URLS="http://10.206.0.10:2380" ETCD_LISTEN_CLIENT_URLS="http://10.206.0.10:2379" ETCD_NAME="controller" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.206.0.10:2380" ETCD_ADVERTISE_CLIENT_URLS="http://10.206.0.10:2379" ETCD_INITIAL_CLUSTER="controller=http://10.206.0.10:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" ETCD_INITIAL_CLUSTER_STATE="new" #启动 systemctl enable --now etcd安装OpenStack Service安装 Keystone{message type="success" content="安装在openstack-1上"/}# 连接数据库 mysql -uroot -p # 建库 CREATE DATABASE keystone; CREATE USER keystone IDENTIFIED BY 'openstack@webzhan.xyz'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%'; FLUSH PRIVILEGES; # 安装 yum install -y openstack-keystone httpd mod_wsgi # 抱错安装 yum install -y qpid-proton-c-0.26.0-2.el7.x86_64 # 配置 vim /etc/keystone/keystone.conf [database] connection = mysql+pymysql://keystone:openstack%40webzhan.xyz@openstack-1/keystone [token] provider = fernet # 填充数据库 keystone-manage db_sync keystone # 初始化Fernet密钥存储库 keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone keystone-manage credential_setup --keystone-user keystone --keystone-group keystone # 启动keystone keystone-manage bootstrap --bootstrap-password $ADMIN_PASS \ --bootstrap-admin-url http://openstack-1:5000/v3/ \ --bootstrap-internal-url http://openstack-1:5000/v3/ \ --bootstrap-public-url http://openstack-1:5000/v3/ \ --bootstrap-region-id RegionOne # 配置httpd vim /etc/httpd/conf/httpd.conf ServerName openstack-1 # 建立软连接 ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/ # 启动httpd systemctl enable --now httpd # 三台服务器更新环境变量 export OS_USERNAME=admin export OS_PASSWORD=$ADMIN_PASS export OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_DOMAIN_NAME=Default export OS_AUTH_URL=http://openstack-1:5000/v3 # 三台服务器使环境变量生效 source /etc/profile # 以下继续在 openstack-1 执行 # 创建默认 domain openstack domain create --description "An Example Domain" example # 创建service 项目 openstack project create --domain default --description "Service Project" service # 创建myproject project openstack project create --domain default --description "Demo Project" myproject # myuser 用户,密码设置123456 openstack user create --domain default --password-prompt myuser # 创建myrole权限 openstack role create myrole # 把myrole权限加入到myproject和myuser中 openstack role add --project myproject --user myuser myrole # 验证 unset OS_AUTH_URL OS_PASSWORD openstack --os-auth-url http://openstack-1:5000/v3 \ --os-project-domain-name Default --os-user-domain-name Default \ --os-project-name admin --os-username admin token issue # 验证myproject openstack --os-auth-url http://openstack-1:5000/v3 \ --os-project-domain-name Default --os-user-domain-name Default \ --os-project-name myproject --os-username myuser token issue # 创建 admin-openrc 文件 export OS_USERNAME=admin export OS_PASSWORD=$ADMIN_PASS export OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_DOMAIN_NAME=Default export OS_AUTH_URL=http://openstack-1:5000/v3 export OS_IDENTITY_API_VERSION=3 # 创建 demo-openrc 文件 export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=myproject export OS_USERNAME=myuser export OS_PASSWORD=123456 export OS_AUTH_URL=http://openstack-1:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2 # 使之生效 . admin-openrc # 请求认证 token openstack token issue{card-default label="认证结果" width="95%"}{/card-default}安装 Glance{message type="success" content="安装在openstack-1上"/}# 连接数据库 mysql -uroot -p # 创建 mysql 用户及库 CREATE DATABASE glance; CREATE USER glance IDENTIFIED BY 'openstack@webzhan.xyz'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%'; FLUSH PRIVILEGES; # 创建 glance 用户, 密码为上面的 GLANCE_PASS openstack user create --domain default --password-prompt glance # 为 glance 用户添加 admin 权限 openstack role add --project service --user glance admin # 创建 glance service openstack service create --name glance --description "OpenStack Image" image # 创建 Image service API endpoints openstack endpoint create --region RegionOne image public http://openstack-1:9292 openstack endpoint create --region RegionOne image internal http://openstack-1:9292 openstack endpoint create --region RegionOne image admin http://openstack-1:9292 # 安装 glance 组件: yum install -y openstack-glance # 修改 /etc/glance/glance-api.conf 文件: [database] connection = mysql+pymysql://glance:openstack%40webzhan.xyz@openstack-1/glance [keystone_authtoken] www_authenticate_uri = http://openstack-1:5000 auth_url = http://openstack-1:5000 memcached_servers = openstack-1:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = c08393f3ed64cbca17ec [paste_deploy] flavor = keystone [glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/ # 初始化数据库 glance-manage db_sync glance # 启动 Glance 服务,如果启动失败,见最后FAQ,应该是权限问题。 systemctl enable --now openstack-glance-api # 验证 wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img lsof -i:9292 openstack image create "cirros" --file cirros-0.3.0-x86_64-disk.img --disk-format qcow2 --container-format bare --public openstack image list{card-default label="验证结果" width="90%"}{/card-default}安装 Placement{message type="success" content="安装在openstack-1上"/}# 连接数据库 mysql -uroot -p # 创建 mysql 库和用户 CREATE DATABASE placement; CREATE USER placement IDENTIFIED BY 'openstack@webzhan.xyz'; GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%'; FLUSH PRIVILEGES; # 创建用户,密码是上面的 PLACEMENT_PASS openstack user create --domain default --password-prompt placement # 添加 placement service openstack role add --project service --user placement admin # 创建Placement API entry: openstack service create --name placement --description "Placement API" placement # 创建 Placement API service endpoints openstack endpoint create --region RegionOne placement public http://openstack-1:8778 openstack endpoint create --region RegionOne placement internal http://openstack-1:8778 openstack endpoint create --region RegionOne placement admin http://openstack-1:8778 # 安装 Placement 组件 yum install -y openstack-placement-api # 修改 /etc/placement/placement.conf 文件: [placement_database] connection = mysql+pymysql://placement:openstack%40webzhan.xyz@openstack-1/placement [api] auth_strategy = keystone [keystone_authtoken] auth_url = http://openstack-1:5000/v3 memcached_servers = openstack-1:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = placement password = c08393f3ed64cbca17ec # 初始化数据库 placement-manage db sync # 重启 httpd 服务 systemctl restart httpd # 验证。出现错误,见FAQ placement-status upgrade check pip install osc-placement==2.2.0 openstack --os-placement-api-version 1.2 resource class list --sort-column name openstack --os-placement-api-version 1.6 trait list --sort-column name{card-default label="验证结果" width="95%"}{/card-default}安装 Nova{callout color="#f0ad4e"}需要先安装 Nova 控制节点,再安装 Nova 计算节点{/callout}安装 Nova 控制节点{message type="success" content="安装在openstack-1上"/}# 连接数据库 mysql -uroot -p # 创建 mysql 用户和库 CREATE DATABASE nova_api; CREATE DATABASE nova; CREATE DATABASE nova_cell0; CREATE USER nova IDENTIFIED BY 'openstack@webzhan.xyz'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%'; GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%'; FLUSH PRIVILEGES; # 创建 nova 用户,密码是 NOVA_PASS openstack user create --domain default --password-prompt nova # 为 nova 添加 admin 权限: openstack role add --project service --user nova admin # 创建 nova service entity openstack service create --name nova --description "OpenStack Compute" compute # 创建 Compute API service endpoints openstack endpoint create --region RegionOne compute public http://openstack-1:8774/v2.1 openstack endpoint create --region RegionOne compute internal http://openstack-1:8774/v2.1 openstack endpoint create --region RegionOne compute admin http://openstack-1:8774/v2.1 # 安装 nova yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler # 修改 /etc/nova/nova.conf 文件 [DEFAULT] enabled_apis=osapi_compute,metadata block_device_allocate_retries=300 block_device_allocate_retries_interval=3 [api_database] connection = mysql+pymysql://nova:openstack%40webzhan.xyz@openstack-1/nova_api [database] connection = mysql+pymysql://nova:openstack%40webzhan.xyz@openstack-1/nova [DEFAULT] transport_url=rabbit://openstack:c08393f3ed64cbca17ec@openstack-1:5672/ [api] auth_strategy = keystone [keystone_authtoken] www_authenticate_uri = http://openstack-1:5000/ auth_url = http://openstack-1:5000/ memcached_servers = openstack-1:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = c08393f3ed64cbca17ec [DEFAULT] my_ip=10.206.0.10 [DEFAULT] use_neutron = true firewall_driver = nova.virt.firewall.NoopFirewallDriver [vnc] enabled = true server_listen = $my_ip server_proxyclient_address = $my_ip [glance] api_servers=http://openstack-1:9292 [oslo_concurrency] lock_path = /var/lib/nova/tmp [placement] region_name = RegionOne project_domain_name = Default project_name = service auth_type = password user_domain_name = Default auth_url = http://openstack-1:5000/v3 username = placement password = c08393f3ed64cbca17ec # 初始化数据库 nova-manage api_db sync # 注册 cell0 数据库 nova-manage cell_v2 map_cell0 # 注册 cell1 数据库 nova-manage cell_v2 create_cell --name=cell1 --verbose # 填充 nove 数据库 nova-manage db sync # 验证 cell0 和 cell1 是否被注册了 nova-manage cell_v2 list_cells # 启动 nova systemctl enable --now openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy # 检查更新 nova-status upgrade check{card-default label="结果" width="75%"}{/card-default}安装 Nova 计算节点{message type="success" content="安装在openstack-2和openstack-3上"/}# 安装 yum install -y qpid-proton-c-0.26.0-2.el7.x86_64 yum install -y openstack-nova-compute # 修改 /etc/nova/nova.conf 文件,注意my_ip [DEFAULT] enabled_apis = osapi_compute,metadata block_device_allocate_retries=300 block_device_allocate_retries_interval=3 [DEFAULT] transport_url=rabbit://openstack:c08393f3ed64cbca17ec@openstack-1 [api] auth_strategy = keystone [keystone_authtoken] www_authenticate_uri = http://openstack-1:5000/ auth_url = http://openstack-1:5000/ memcached_servers = openstack-1:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = c08393f3ed64cbca17ec [DEFAULT] my_ip=10.206.0.6 [DEFAULT] use_neutron = true firewall_driver = nova.virt.firewall.NoopFirewallDriver [vnc] enabled = true server_listen = 0.0.0.0 server_proxyclient_address = $my_ip novncproxy_base_url = http://openstack-1:6080/vnc_auto.html [glance] api_servers=http://openstack-1:9292 [oslo_concurrency] lock_path = /var/lib/nova/tmp [placement] region_name = RegionOne project_domain_name = Default project_name = service auth_type = password user_domain_name = Default auth_url = http://openstack-1:5000/v3 username = placement password = c08393f3ed64cbca17ec # 执行 egrep -c '(vmx|svm)' /proc/cpuinfo # 如果返回了 0 ,还需要配置: [libvirt] virt_type=qemu # 启动 Nova 计算节点: systemctl enable --now libvirtd openstack-nova-compute # 查看有哪些计算节点 openstack compute service list --service nova-compute # 发现计算节点,每次加入新节点后,都要执行 nova-manage命令。 nova-manage cell_v2 discover_hosts --verbose # 验证 Nova 安装 openstack catalog list openstack image list nova-status upgrade check{card-default label="发现节点" width="75%"}{/card-default}安装 Neutron{callout color="#f0ad4e"}Neutron 提供网络服务。Neutron 也分控制节点和计算节点。{/callout}安装 Neutron 控制节点{message type="success" content="安装在openstack-1上"/}# 连接数据库 mysql -uroot -p # 创建 mysql 库和用户 CREATE DATABASE neutron; CREATE USER neutron IDENTIFIED BY 'openstack@webzhan.xyz'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%'; FLUSH PRIVILEGES; # 创建 neutron 用户,使用 NEUTRON_PASS 为密码 openstack user create --domain default --password-prompt neutron # 为 neutron 用户添加 admin 权限 openstack role add --project service --user neutron admin # 创建 neutron service entity openstack service create --name neutron --description "OpenStack Networking" network # 创建 Networking service API endpoints openstack endpoint create --region RegionOne network public http://openstack-1:9696 openstack endpoint create --region RegionOne network internal http://openstack-1:9696 openstack endpoint create --region RegionOne network admin http://openstack-1:9696 # 这里配置网络有两种选项,下面来部署比较简单的 yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables # 修改 /etc/neutron/neutron.conf 文件 [database] connection = mysql+pymysql://neutron:openstack%40webzhan.xyz@openstack-1/neutron [DEFAULT] core_plugin = ml2 service_plugins = [DEFAULT] transport_url=rabbit://openstack:c08393f3ed64cbca17ec@openstack-1 [DEFAULT] auth_strategy = keystone [keystone_authtoken] www_authenticate_uri = http://openstack-1:5000 auth_url = http://openstack-1:5000 memcached_servers = openstack-1:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = c08393f3ed64cbca17ec [DEFAULT] notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true [nova] auth_url = http://openstack-1:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = c08393f3ed64cbca17ec [oslo_concurrency] lock_path = /var/lib/neutron/tmp # 修改 /etc/neutron/plugins/ml2/ml2_conf.ini 文件,添加以下内容 [ml2] type_drivers = flat,vlan tenant_network_types = mechanism_drivers = linuxbridge extension_drivers = port_security [ml2_type_flat] flat_networks = provider [securitygroup] enable_ipset = true # 修改 /etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件,添加以下内容 ## 注意网卡名称 [linux_bridge] physical_interface_mappings = provider:eth0 [vxlan] enable_vxlan = false [securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver # 修改 /etc/neutron/dhcp_agent.ini 文件,加入以下配置 [DEFAULT] interface_driver = linuxbridge dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true # 修改 /etc/neutron/metadata_agent.ini 文件,加入以下内容 [DEFAULT] nova_metadata_host = openstack-1 metadata_proxy_shared_secret = c08393f3ed64cbca17ec # 修改 /etc/nova/nova.conf 文件,加入以下内容 [neutron] auth_url = http://openstack-1:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = c08393f3ed64cbca17ec service_metadata_proxy = true metadata_proxy_shared_secret = c08393f3ed64cbca17ec # 启动 Neutron ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head systemctl restart openstack-nova-api systemctl enable --now neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent # 创建网络 openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider # 创建子网 openstack subnet create --network provider --allocation-pool start=10.206.0.20,end=10.206.0.50 --dns-nameserver 183.60.83.19 --gateway 10.206.0.1 --subnet-range 10.206.0.0/20 provider{card-default label="创建子网" width="95%"}{/card-default}安装 Neutron 计算节点{message type="success" content="安装在openstack-2和openstack-3上"/}# 安装软件 yum install -y openstack-neutron-linuxbridge ebtables ipset # 修改 /etc/neutron/neutron.conf 配置文件 [DEFAULT] transport_url=rabbit://openstack:c08393f3ed64cbca17ec@openstack-1 [DEFAULT] auth_strategy = keystone [keystone_authtoken] www_authenticate_uri = http://openstack-1:5000 auth_url = http://openstack-1:5000 memcached_servers = openstack-1:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = c08393f3ed64cbca17ec [oslo_concurrency] lock_path = /var/lib/neutron/tmp # 修改 /etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件 ## 注意网卡名称 [linux_bridge] physical_interface_mappings = provider:eth0 [vxlan] enable_vxlan = false [securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver # 修改 /etc/nova/nova.conf 文件 [neutron] url = http://openstack-1:9696 auth_url = http://openstack-1:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = c08393f3ed64cbca17ec # 重启计算服务 systemctl restart openstack-nova-compute # 启动网络计算服务。启动抱错(网卡名称导致),见FAQ systemctl enable --now neutron-linuxbridge-agent # 验证 openstack extension list --network # 查看网络节点列表 openstack network agent list{card-default label="验证结果" width="95%"}{/card-default}安装 CInder{callout color="#f0ad4e"}Cinder 分为 控制节点、储存节点、备份节点{/callout}安装 Cinder 控制节点{message type="success" content="安装在openstack-1上"/}# 连接数据库 mysql -uroot -p # 添加 mysql 库和 用户 CREATE DATABASE cinder; CREATE USER cinder IDENTIFIED BY 'openstack@webzhan.xyz'; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%'; FLUSH PRIVILEGES; # 创建 cinder 用户,密码是 CINDER_PASS openstack user create --domain default --password-prompt cinder # 为 cinder 用户绑定 admin 权限 openstack role add --project service --user cinder admin # 创建 cinderv2 and cinderv3 service entities openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2 openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3 # 创建 Block Storage service API endpoints openstack endpoint create --region RegionOne volumev2 public http://openstack-1:8776/v2/%\(project_id\)s openstack endpoint create --region RegionOne volumev2 internal http://openstack-1:8776/v2/%\(project_id\)s openstack endpoint create --region RegionOne volumev2 admin http://openstack-1:8776/v2/%\(project_id\)s openstack endpoint create --region RegionOne volumev3 public http://openstack-1:8776/v3/%\(project_id\)s openstack endpoint create --region RegionOne volumev3 internal http://openstack-1:8776/v3/%\(project_id\)s openstack endpoint create --region RegionOne volumev3 admin http://openstack-1:8776/v3/%\(project_id\)s # 安装 cinder yum install -y openstack-cinder # 修改 /etc/cinder/cinder.conf 配置文件 [database] connection = mysql+pymysql://cinder:openstack%40webzhan.xyz@openstack-1/cinder [DEFAULT] transport_url=rabbit://openstack:c08393f3ed64cbca17ec@openstack-1:5672/ auth_strategy = keystone my_ip = 10.206.0.10 [keystone_authtoken] www_authenticate_uri = http://openstack-1:5000 auth_url = http://openstack-1:5000 memcached_servers = openstack-1:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = cinder password = c08393f3ed64cbca17ec [oslo_concurrency] lock_path = /var/lib/cinder/tmp # 初始化数据库 cinder-manage db sync # 配置计算节点使用块储存,在全部节点上修改 /etc/nova/nova.conf [cinder] os_region_name = RegionOne # 重启 nova-api systemctl restart openstack-nova-api # 启动块储存控制节点的服务: systemctl enable --now openstack-cinder-api openstack-cinder-scheduler安装 Cinder 储存节点{message type="success" content="安装在openstack-2上"/}{card-describe title="方法一"}# 实体机采用虚拟卷扩展磁盘,本次采用竞价实例无法添加硬盘,采用下面NFS方式 # 安装软件 yum install -y lvm2 device-mapper-persistent-data # 启动 lvm systemctl enable --now lvm2-lvmetad # 准备几块磁盘,创建pv pvcreate /dev/sdb pvcreate /dev/sdc # 创建 vg: vgcreate cinder-volumes /dev/sdb /dev/sdc # 在 /etc/lvm/lvm.conf 中 的 devices 块中添加 filter = [ "a/sdb/", "a/sdc/" "r/.*/"]{/card-describe}{card-describe title="方法二"}# 安装软件 yum -y install nfs-utils rpcbind # 配置 vim /etc/exports /data/nfs *(rw,no_root_squash) # 创建目录 mkdir -p /data/nfs # 启动 systemctl enable --now nfs rpcbind # 查看 showmount -e localhost{/card-describe}{card-default label="结果" width="75%"}{/card-default}# 安装 Cinder 储存组件 yum install -y openstack-cinder targetcli python-keystone # 查看类名 grep 'Nfs' /usr/lib/python2.7/site-packages/cinder/volume/drivers/nfs.py | grep class # 修改 /etc/cinder/cinder.conf 配置文件 [database] connection = mysql+pymysql://cinder:openstack%40webzhan.xyz@openstack-1/cinder [DEFAULT] transport_url=rabbit://openstack:c08393f3ed64cbca17ec@openstack-1:5672/ auth_strategy = keystone glance_api_servers = http://openstack-1:9292 my_ip = 10.206.0.6 enabled_backends = nfs [keystone_authtoken] www_authenticate_uri = http://openstack-1:5000 auth_url = http://openstack-1:5000 memcached_servers = openstack-1:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = cinder password = c08393f3ed64cbca17ec [oslo_concurrency] lock_path = /var/lib/cinder/tmp [nfs] volume_backend_name = nfs volume_driver = cinder.volume.drivers.nfs.NfsDriver nfs_shares_config=/etc/cinder/nfs_shares nfs_mount_point_base=$state_path/mnt # 创建nfs配置文件 vim /etc/cinder/nfs_shares 10.206.0.6:/data/nfs # 更改权限 chown root:cinder /etc/cinder/nfs_shares chmod 640 /etc/cinder/nfs_shares # 启动 Cinder 储存节点 systemctl enable --now openstack-cinder-volume # 验证,密码 c08393f3ed64cbca17ec openstack volume service list{card-default label="验证结果" width="75%"}{/card-default}安装 Horizon{callout color="#f0ad4e"}Horizon就是 Openstack 的 Dashboard。{/callout}{message type="success" content="安装在openstack-1上"/}# 安装软件 yum install -y openstack-dashboard # 修改 /etc/openstack-dashboard/local_settings 配置文件 OPENSTACK_HOST = "openstack-1" ALLOWED_HOSTS = ['*'] SESSION_ENGINE = 'django.contrib.sessions.backends.cache' CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'openstack-1:11211', } } TIME_ZONE = "Asia/Shanghai" OPENSTACK_NEUTRON_NETWORK = { 'enable_auto_allocated_network': False, 'enable_distributed_router': False, 'enable_fip_topology_check': True, 'enable_ha_router': False, 'enable_ipv6': True, # TODO(amotoki): Drop OPENSTACK_NEUTRON_NETWORK completely from here. # enable_quotas has the different default value here. 'enable_quotas': False, 'enable_rbac_policy': True, 'enable_router': True, 'enable_lb': False, 'enable_firewall': False, 'enable_vpn': False, 'default_dns_nameservers': [], 'supported_provider_types': ['*'], 'segmentation_id_range': {}, 'extra_provider_types': {}, 'supported_vnic_types': ['*'], 'physical_networks': [], } OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True OPENSTACK_API_VERSIONS = { "identity": 3, "image": 2, "volume": 3, } OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default" OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user" WEBROOT = "/dashboard/" # 在 /etc/httpd/conf.d/openstack-dashboard.conf 中添加 WSGIApplicationGroup %{GLOBAL} # 重启 httpd 和 缓存服务: systemctl restart httpd memcached # 在界面上创建一个镜像,镜像需要特殊定制的。然后查看镜像列表: glance image-list 测试访问http://openstack-1/dashboard {card-default label="登录测试" width="75%"}{/card-default}{message type="success" content="域填写 default,用户名为 admin,密码为 c08393f3ed64cbca17ec 然后在 管理员 -> 实例类型中创建一个实例类型。最后在 项目 -> 计算 -> 实例中创建实例。"/}FAQglance启动抱错{message type="error" content="Failed to start OpenStack Image Service (code-named Glance) API server."/}#修改systemd配置,注销 vim /lib/systemd/system/openstack-glance-api.service #Restart=on-failure # 使生效 systemctl daemon-reload # 重启 systemctl restart openstack-glance-api # 报错权限问题,修改后重启成功 chown -R glance:glance /var/log/glance/api.logPlacement报错{message type="error" content="Expecting value: line 1 column 1 (char 0)"/}# 在 /etc/httpd/conf.d/00-placement-api.conf 中的 <VirtualHost *:8778> 内部加入以下代码: <Directory /usr/bin> <IfVersion >= 2.4> Require all granted </IfVersion> <IfVersion < 2.4> Order allow,deny Allow from all </IfVersion> </Directory> # 重启 httpd systemctl restart httpd # 再次验证 openstack --os-placement-api-version 1.2 resource class list --sort-column name openstack --os-placement-api-version 1.6 trait list --sort-column nameneutron-linuxbridge-agent 启动抱错{message type="error" content="Failed to start OpenStack Neutron Linux Bridge Agent."/}# 查看日志 cat /var/log/neutron/linuxbridge-agent.log Interface ens192 for physical network provider does not exist. Agent terminated! # 修改 /etc/neutron/plugins/ml2/linuxbridge_agent.ini ## 网卡接口不对 [linux_bridge] physical_interface_mappings = provider:eth0 # 重启服务 systemctl restart neutron-linuxbridge-agent
2022年08月13日
74 阅读
1 评论
2 点赞
2022-08-06
openstack架构说明
前言{callout color="#f0ad4e"}OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权。OpenStack为私有云和公有云提供可扩展的弹性的云计算服务。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。{/callout}组件图{message type="success" content="组建很多,每个组件都需要单独安装"/}{card-default label="组件图" width="95%"}{/card-default}全部service 地址控制节点{card-describe title="管理支持"}MySQL:数据库作为基础/扩展服务产生的数据存放的地方Qpid:消息代理(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务{/card-describe}{card-describe title="基础管理"}Keystone:认证管理服务,提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模板Nova:计算管理服务,提供了对计算节点的Nova的管理,使用Nova-API进行通信Neutron:网络管理服务,提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理面板Horizon:控制台服务,提供了以Web的形式对所有节点的所有服务的管理,通常把该服务称为DashBoard{/card-describe}{card-describe title="扩展管理"}Cinder:提供管理存储节点的Cinder相关,同时提供Cinder在Horizon中的管理面板Swift:提供管理存储节点的Swift相关,同时提供Swift在Horizon中的管理面板Trove:提供管理数据库节点的Trove相关,同时提供Trove在Horizon中的管理面板Heat:提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作{/card-describe}{message type="success" content="控制节点一般来说只需要一个网络端口用于通信/管理各个节点。"/}网络节点{card-describe title="Neutron服务"}Neutron:负责管理私有网段与公有网段的通信,以及管理虚拟机网络之间的通信/拓扑,管理虚拟机之上的防火等{/card-describe}计算节点{card-describe title="基础服务"}Nova:提供虚拟机的创建,运行,迁移,快照等各种围绕虚拟机的服务,并提供API与控制节点对接,由控制节点下发任务Neutron:提供计算节点与网络节点之间的通信服务{/card-describe}{card-describe title="扩展服务"}Telmeter:提供计算节点的监控代理,将虚拟机的情况反馈给控制节点,是Centimeter的代理服务{/card-describe}存储节点{card-describe title="Cinder服务"}块存储服务,提供相应的块存储,简单来说,就是虚拟出一块磁盘,可以挂载到相应的虚拟机之上,不受文件系统等因素影响,对虚拟机来说,这个操作就像是新加了一块硬盘,可以完成对磁盘的任何操作,包括挂载,卸载,格式化,转换文件系统等等操作,大多应用于虚拟机空间不足的情况下的空间扩容等等{/card-describe}{card-describe title="Swift服务"}对象存储服务,提供相应的对象存储,简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,也仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件{/card-describe}架构图{card-default label="总体架构" width="95%"}{/card-default}{card-default label="逻辑体系架构" width="95%"}{/card-default}
2022年08月06日
72 阅读
0 评论
1 点赞
2022-07-06
openstack和Kubernetes对比
K8s{alert type="info"}面向应用层,变革的是业务架构面向容器实例的编排、管理;容器的主要应用场景更多的是无状态的中间件电商业务的大规模弹性业务需求给了容器展示自身强大能力的舞台k8s与容器的结合体现容器技术的高弹性,轻负载,但需要大量的应用厂商的微服务化来对其进行生态支持,同时容器数据持久化,容器网络通信等技术也普遍成熟度较低kubernetes是管理container的工具{/alert}OpenStack{alert type="info"}面向资源层,改变的是资源供给模式面向的是云数据中心中资源的整合,计算虚拟化(KVM、Xen)、网络虚拟化、存储虚拟化,并将整合后的基础设施资源对外提供服务;使用的虚拟化技术相对老旧贵在稳定、生态成熟,无论是对OS还是应用的支撑都是稳健的,但资源弹性不足openstack 功能过于全面openstack是管理VM的工具OpenStack = 计算资源管理(主要最成熟的是虚机) + 存储资源管理 + 网络资源管理{/alert}对比{alert type="info"}container可以运行在物理机上,也可以运行在VM上。kubernetes不是需要openstack的支持。但对于云计算来说,很多IasS都通过openstack来管理虚拟机。kubernetes虽然是开源的,但它毕竟是为GCE服务的,Google其实并没有多少动力去支持其他平台的{/alert}{message type="info" content="OpenStack+Kubernetes 是目前相对完整的云应用解决方案栈"/}
2022年07月06日
19 阅读
6 评论
-4 点赞
1
2