linux启动时执行脚本的问答

举报
黄生 发表于 2024/12/23 22:45:50 2024/12/23
【摘要】 1. Doris 配置文件解释(nacos管理页面上的):o 您提供了 Doris 的配置信息。我解释了配置中的 URL、HTTP URL、端口、用户名、密码、数据库名等参数。 url: jdbc:mysql://192.168.199.131:9030/ httpUrl: 192.168.199.131 httpPort: 8030 username: rooto 您询问了关于 Vault...

1. Doris 配置文件解释(nacos管理页面上的)

o 您提供了 Doris 的配置信息。我解释了配置中的 URL、HTTP URL、端口、用户名、密码、数据库名等参数。

url: jdbc:mysql://192.168.199.131:9030/
httpUrl: 192.168.199.131
httpPort: 8030
username: root

o 您询问了关于 Vault 的配置,包括数据库配置和密钥管理服务配置。我解释了配置中的 IP 地址、端口、用户名、密码、数据库名、Vault 的 URI、认证方式和令牌。

o 您询问了如何确认 Doris 的端口信息。

o FE开放了8030,9020,9030,9010端口,be开放了8040,8060,9050,9060端口,那使用mysql客户端连接时,使用哪个端口?我建议使用 Backend 的查询端口(query_port)。瞎回答,应该连接9030端口,上面有。

o 您提到可以通过 Doris 的 Web UI (8030端口)登录并查看表和数据信息,并询问是否还需要使用 MySQL 客户端连接。我解释了 Web UI 和 MySQL 客户端的不同使用场景,并指出如果可以通过 Web UI 满足需求,则不需要 MySQL 客户端。

2. Vault 容器解封

o 您询问了为什么 Vault 需要启动两个容器:vault 和 unseal-vault。我解释了 Vault 的密封和解封机制,并说明了为什么需要两个容器。

o 除了使用浏览器在页面中解封外,您提到了使用 vault operator unseal 命令解封 Vault。

o 当你在 rc.local 或类似的启动脚本中执行 docker exec 命令时,遇到的错误:

%3. $HOME is not defined

• 在 rc.local 或系统启动脚本中运行命令时,它们通常不会设置 HOME 环境变量。HOME 环境变量通常在用户登录时设置。

%3. the input device is not a TTY

• docker exec -it 命令期望一个交互式终端(TTY Teletype Teletypewriter),但是 rc.local 脚本在系统启动时后台运行,没有连接到任何终端。

o -t, --tty Allocate a pseudo-TTY
-t是可以移除,
-i, --interactive Keep STDIN open even if not attached
--privileged Give extended privileges to the command
-i也可以移除吗?

-i 或 --interactive 参数的作用是保持容器的标准输入(STDIN)打开,即使你没有附加到容器上。当你在 rc.local 或类似的启动脚本中执行 docker exec 命令时,通常不需要与容器进行交互,因此可以安全地移除 -i 参数。

o docker exec unseal-vault sh -c 'vault operator unseal "XXX04oGlsHLMmViRiIBcBskXgsNpxG5sbm1FGIq+YYY="'

这里使用了 sh -c 来在容器内执行命令,并用引号包围了整个 vault 命令。

3. Docker Compose depends_on service_healthy

o 您询问了 Docker Compose 中 depends_on 和 service_healthy 的工作机制。我解释了它们如何控制服务启动顺序和健康检查。

o depends_on:
base:
condition: service_healthy

o 您询问了如何在 Dockerfile 中使用 HEALTHCHECK 指令,并如何查看 base 容器的 Dockerfile。我提供了查看 Docker 历史和 Dockerfile 的方法。您询问了如何使用 docker history 命令查看镜像的构建历史。我提供了如何查看和解释构建历史的指导。

o 您询问了 Docker 健康检查的配置,特别是 Interval 和 Timeout 参数的单位问题。我解释了这些参数的正确单位应该是秒,并指出了可能的误解。

o 您询问了 Docker Compose 中 start_period 选项的作用。我解释了它如何为容器提供初始化时间。start_period: 45s 确保 Docker 在 base 容器启动后的至少 45 秒内不会执行健康检查。

4. rc.local 脚本和 startdoris.sh 脚本

o 您分享了 /etc/rc.local 和 startdoris.sh 脚本,并询问了它们的作用和优化建议。我提供了对脚本的解释、点评和一些可能的优化建议,包括错误处理、日志管理、环境变量持久化、服务依赖性、安全性、代码风格和性能调优。

/etc/rc.local:
touch /var/lock/subsys/local
source /etc/profile

docker start db redis-master
/root/startdoris.sh
docker start unseal-vault
sleep 3
HOME=/root
export HOME
docker exec unseal-vault sh -c "vault operator unseal 'XXX04oGlsHLMmViRiIBcBskXgsNpxG5sbm1FGIq+YYY='" &>> /tmp/max
docker start vault
docker-compose -f /home/config/docker/docker-compose-dt.yaml up -d

startdoris.sh:
#!/bin/bash

### doris

/data/software/doris/fe/bin/start_fe.sh --daemon
sysctl -w vm.max_map_count=2000000 1>>/tmp/max 2>>/tmp/max
ulimit -n 65535
/data/software/doris/be/bin/start_be.sh --daemon 1>>/tmp/max 2>>/tmp/max

### nacos

/data/sdata/components/nacos/bin/startup.sh -m standalone

用户询问 /usr/lib/systemd/system/rc-local.service 文件内容的解释。详细解释了该文件中每个部分的含义,包括单元描述、条件执行、服务类型、执行命令、超时设置和退出后状态保持。这个服务单元文件定义了如何管理和执行 /etc/rc.d/rc.local 脚本,确保在系统启动时执行自定义命令或脚本。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。