-
【功能模块】华为鲲鹏920 Robox【操作步骤&问题现象】1、根据步骤搭建好环境2、./robox -v start 1【截图信息】【日志信息】(可选,上传日志内容或者附件)root@ubuntu-arm:/home/huawei/robox-master# ./robox -v start 11: Attempting to start instance instance11: 1: STARTING Frame Buffer1: The Xorg service has been created 1: STARTING Session Managertaskset -c 4-7 anbox session-manager --run-multiple=1 --standalone --experimental --single-window --window-size=720,12801: FAILED to start the Session Manager 1: Stopping1: Attempting to stop instance instance11: NOT stopping Docker, it's not running1: NOT stopping Session Manager, it's not running1: Attempting to start instance instance11: 1: STARTING Frame Buffer1: The Xorg service has been created 1: STARTING Session Managertaskset -c 4-7 anbox session-manager --run-multiple=1 --standalone --experimental --single-window --window-size=720,12801: FAILED to start the Session Manager 1: Stopping1: Attempting to stop instance instance11: NOT stopping Docker, it's not running1: NOT stopping Session Manager, it's not running1: Attempting to start instance instance11: 1: STARTING Frame Buffer1: The Xorg service has been created 1: STARTING Session Managertaskset -c 4-7 anbox session-manager --run-multiple=1 --standalone --experimental --single-window --window-size=720,12801: FAILED to start the Session Manager 1: Stopping1: Attempting to stop instance instance11: NOT stopping Docker, it's not running1: NOT stopping Session Manager, it's not running1: Attempting to start instance instance11: 1: STARTING Frame Buffer1: The Xorg service has been created 1: STARTING Session Managertaskset -c 4-7 anbox session-manager --run-multiple=1 --standalone --experimental --single-window --window-size=720,12801: FAILED to start the Session Manager 1: Stopping1: Attempting to stop instance instance11: NOT stopping Docker, it's not running1: NOT stopping Session Manager, it's not running1: Attempting to start instance instance11: 1: STARTING Frame Buffer1: The Xorg service has been created 1: STARTING Session Managertaskset -c 4-7 anbox session-manager --run-multiple=1 --standalone --experimental --single-window --window-size=720,12801: FAILED to start the Session Manager 1: Stopping1: Too many stop loops (try restarting dockerd) giving up! 1: Too many stop loops (try restarting dockerd) giving up! root@ubuntu-arm:/home/huawei/robox-master# root@ubuntu-arm:/home/huawei/robox-master#
-
1 Istio介绍Istio-proxy是可在客户端和服务器端使用的微服务代理,并形成微服务网格。Proxy引用了微服务代理Envoy的源码,并在此基础上做了扩展,结合istio本身做处理。它支持很多功能。客户端功能:1)发现和负载平衡。代理可以使用几种标准服务发现和负载平衡API来有效地将流量分配给服务。2)凭证注入。代理可以通过连接隧道或特定于协议的机制(例如HTTP请求的JWT令牌)注入客户端身份。3)连接管理。代理管理与服务的连接,处理运行状况检查,重试,故障转移和流控制。4)监视和记录。代理可以报告客户端指标并记录到混合器。服务器端功能:1)速率限制和流量控制。代理可以防止后端系统过载,并提供客户端感知的速率限制。2)协议翻译。代理是gRPC网关,提供JSON-REST和gRPC之间的转换。3)认证和授权。代理支持多种身份验证机制,并且可以使用客户端身份通过混合器执行授权检查。4)监视和记录。代理可以报告服务器端指标并记录到混合器。2 软硬件环境要求类别子项版本硬件CPU鲲鹏920OSCentOS7.6软件GCC7.3.0Go1.13.4Clang9.0.1OpenJDK1.8.0_282Bazel3.3.1Istio-proxy/Istio1.5.0网络需连外网需连外网 3 配置编译环境3.1 安装gcc 7.3通常centos自带的版本是gcc4.8.5,在此基础上进行升级即可。执行以下命令:wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gztar -xvf gcc-7.3.0.tar.gzcd gcc-7.3.0./contrib/download_prerequisitesmkdir gcc-build-7.3.0cd gcc-build-7.3.0../configure --enable-checking=release --enable-language=c,c++ --disable-multilib --prefix=/usrmake -j16make install 确保依赖库存在:cd /usr/lib64ll |grep libstdc++.soll |grep libstdc++.so.6.0.24gcc --version 3.2 源码编译安装llvm+clang安装依赖软件:yum install cmake gcc g++ libffi libffi-dev -y其中cmake需要安装3.8以上版本,如果yum源中没有,执行以下命令安装:wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gztar zxvf cmake-3.9.2.tar.gzcd cmake-3.9.2./bootstrapmake -j32make install如果yum源中没有libffi,可以使用源码安装,执行以下命令即可:wget https://github.com/libffi/libffi/releases/download/v3.3/libffi-3.3.tar.gztar xf libffi-3.3.tar.gz cd libffi-3.3./configure --prefix=/usr/local/libffimake -j12make install 安装llvm+clang,下载源码:cd /optwget https://github.com/llvm/llvm-project/archive/llvmorg-9.0.1.tar.gztar -xf llvmorg-9.0.1.tar.gz执行编译安装命令:cd llvm-project-llvmorg-9.0.1rm -rf buildmkdir build && cd buildcmake -G "Unix Makefiles" ../llvm \ -DCMAKE_INSTALL_PREFIX=/opt/llvm \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_FFI=ON \ -DLLVM_BUILD_LLVM_DYLIB=ON \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DLLVM_TARGETS_TO_BUILD="host;AArch64" \ -DLLVM_ENABLE_PROJECTS="clang;compiler-rt;libcxx;libcxxabi;lld" \ -DLLVM_ENABLE_LIBCXX=OFF \-DLLVM_ENABLE_LLD=OFF \-DFFI_INCLUDE_PATH=/usr/local/libffi/include/ \-DFFI_LIBRARY_PATH=/usr/local/libffi/ \-Wno-devmake -j20make install配置环境变量:export PATH=/opt/llvm/bin:$PATHexport LD_LIBRARY_PATH=/opt/llvm/lib:$LD_LIBRARY_PATHexport LIBRARY_PATH=$LD_LIBRARY_PATHexport C_INCLUDE_PATH=/opt/llvm/include:$C_INCLUDE_PATHexport CXX_INCLUDE_PATH=$C_INCLUDE_PATHclang --version 3.3 源码编译安装bazel确保已经安装了jdk8,推荐使用毕昇jdk。下载毕昇jdk并且安装: wget https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_jdk/bisheng-jdk-8u282-linux-aarch64.tar.gztar -zxf bisheng-jdk-8u282-linux-aarch64.tar.gzvim /etc/profile #在文件末尾添加以下内容export JAVA_HOME=/opt/bisheng-jdk1.8.0_282/export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarsource /etc/profile 确保已经设置好了JAVA_HOME环境变量。下载bazel-3.3.1源码:wget https://github.com/bazelbuild/bazel/releases/download/3.3.1/bazel-3.3.1-dist.zipunzip bazel-3.3.1-dist.zip -d bazel-3.3.1cd bazel-3.3.1执行编译安装命令:env EXTRA_BAZEL_ARGS="--host_javabase=@local_jdk//:jdk" bash ./compile.shcp output/bazel /usr/bin/bazel --version 3.4 源码编译安装gn安装依赖包:yum install ninja-build -ywget -c https://github.com/ninja-build/ninja/archive/refs/tags/v1.10.1.zip -O ninja-1.10.1.zipunzip ninja-1.10.1.zipcd ninja-1.10.1./configure.py --bootstrapcp ninja /usr/bin/编译安装gn:git clone https://github.com/timniederhausen/gn.git -b 2020.03cd gnpython build/gen.pyninja -C outcp out/gn /usr/bin/gn --version3.5 安装gowget https://dl.google.com/go/go1.13.4.linux-arm64.tar.gztar -xf go1.13.4.linux-arm64.tar.gz -C /opt/配置环境变量:export PATH=/opt/go/bin:$PATHexport GO111MODULE=onexport GOROOT="/opt/go"export GOBIN=$GOROOT/binexport GOHOME="/home/gopath"export GOARCH="arm64"go version 4 软件移植分析4.1 Istio-proxyIstio-proxy是通过bazel工具构建,主要根据WORKSPACE和BUILD文件的规则来编译。从这些文件以及Makefile/Makefile.core.mk中可以发现,istio-proxy的编译主要是build和build_envoy,而实际尝试后,build和build_envoy的区别是,build规则不仅会编译得到envoy可执行文件,还会构建istio-envoy的docker镜像,而build_envoy只会得到envoy文件。由于在istio的编译中只需要envoy文件即可,所以当前只编译build_envoy。4.2 IstioIstio的编译包括生成二进制和构建docker镜像。编译二进制时,由于Istio的编译依赖于envoy,而默认配置下会从网络下载amd64架构的envoy。这不符合要求,所以需要加USE_LOCAL_PROXY=1,指定本地已经编译好的envoy。需要注意的是envoy和istio的源码路径在同级目录。 5 Istio编译5.1 Istio-proxy1.5.0编译依赖组件安装:yum install libtool automake autoconf make virtualenv -y下载源码:git clone https://github.com/istio/proxy.git -b 1.5.0cd proxyGN=/usr/bin/gn \NINJA=/usr/bin/ninja \make build_envoy VERBOSE=1 SHELL="/bin/bash -x" BAZEL_BUILD_ARGS="-s --sandbox_debug --verbose_failures --cpu aarch64" -j20第一次编译会失败,报错如下:该报错显示proxy不支持arm64,但实际上代码已经做了arm64的兼容因为根据WORKSPACE定义的规则,会从github下载envoy-wasm.xxx.tar.gz的源码,而envoy-wasm中有个wee8.genrule_cmd的文件,完整路径是它不支持aarch64,需要打patch,patch的内容包括增加对aarch64架构的支持,以及默认使用本地的gn、ninja文件。新建一个patch文件vi wee.patch添加以下内容:diff --git a/bazel/external/wee8.genrule_cmd b/bazel/external/wee8.genrule_cmdindex 9103dfb4d..39353a02b 100644--- a/bazel/external/wee8.genrule_cmd+++ b/bazel/external/wee8.genrule_cmd@@ -2,9 +2,9 @@ set -e -# This works only on Linux-x86_64 and macOS-x86_64.-if [[ ( `uname` != "Linux" && `uname` != "Darwin" ) || `uname -m` != "x86_64" ]]; then- echo "ERROR: wee8 is currently supported only on Linux-x86_64 and macOS-x86_64."+# This works only on Linux-x86_64, Linux-aarch64 and macOS-x86_64.+if [[ ( `uname` != "Linux" && `uname` != "Darwin" ) || ( `uname -m` != "x86_64" && `uname -m` != "aarch64" ) ]]; then+ echo "ERROR: wee8 is currently supported only on Linux-x86_64, Linux-aarch64 and macOS-x86_64." exit 1 fi @@ -28,6 +28,8 @@ fi export AR=$${AR:-ar} export NM=$${NM:-nm}+export GN=$${GN-buildtools/linux64/gn}+export NINJA=$${NINJA:-third_party/depot_tools/ninja} # Hook sanitizers. if [[ $${ENVOY_ASAN-} == "1" ]]; then@@ -75,9 +77,9 @@ WEE8_BUILD_ARGS+=" v8_enable_shared_ro_heap=false" if [[ `uname` == "Darwin" ]]; then buildtools/mac/gn gen out/wee8 --args="$$WEE8_BUILD_ARGS" else- buildtools/linux64/gn gen out/wee8 --args="$$WEE8_BUILD_ARGS"+ $${GN} gen out/wee8 --args="$$WEE8_BUILD_ARGS" fi-third_party/depot_tools/ninja -C out/wee8 wee8+$${NINJA} -C out/wee8 wee8 # Move compiled library to the expected destinations. popd 执行命令:patch -p /root/.cache/bazel/_bazel_root/9b0ca638054cfa0772ed292a93825682/external/envoy/bazel/external/wee8.genrule_cmd wee.patch其中9b0ca638054cfa0772ed292a93825682需要根据实际情况进行修改:另外envoy.bazelrc文件需要添加-Wno-error:执行以下命令:cd proxyvim envoy.bazelrc在33行后面添加如下内容:build --action_env=GNbuild --action_env=NINJA并将105行修改为build:libc++ --action_env=CXXFLAGS="-stdlib=libc++ -Wno-error"再次编译。如果出现以下错误:这个报错是因为没有生成bytecodes-builtins-list.h文件。先将toolchain.ninja文件复制出来备用,执行命令:cp /root/.cache/bazel/_bazel_root/9b0ca638054cfa0772ed292a93825682/sandbox/linux-sandbox/5088/execroot/io_istio_proxy/external/com_googlesource_chromium_v8/wee8/out/wee8/toolchain.ninja /opt路径中的5088需要根据实际情况进行修改。修改wee8.genrule_cmd文件:vim /root/.cache/bazel/_bazel_root/9b0ca638054cfa0772ed292a93825682/external/envoy/bazel/external/wee8.genrule_cmd添加如下内容,并注释clang编译分支:export BAZEL_COMPILER=gccexport BAZEL_CXXOPTS='-static-libstdc++'export CXXFLAGS='-static-libstdc++ -Wno-error'export LDFLAGS='-static-libstdc++'export CC=gccexport CXX=g++编译之后会出现报错:这是因为编译过程中,后续编译链接过程中没有使用gcc,仍然是使用clang的原因导致,不过前面报错无法生成的文件这个时候已经生成了,先将生成的文件复制出来备用:cp -r /root/.cache/bazel/_bazel_root/9b0ca638054cfa0772ed292a93825682/sandbox/linux-sandbox/5089/execroot/io_istio_proxy/external/com_googlesource_chromium_v8/wee8/out/wee8/gen/ /opt注意这里的5089是编译时自动生成的沙箱编号,需要查看编译信息进行对应修改。将wee8.genrule_cmd修改回去并添加以下两行shell代码:cp /opt/toolchain.ninja out/wee8/cp -r /opt/gen out/wee8/编辑/opt/toolchain.ninja并将51、77、86行修改为command=pwd:因为这几个地方的文件都不能正常生成,所以将这几个shell命令修改成pwd,需要生成的文件wee8.genrule_cmd中配置了使用复制的方式。再次编译,成功。在proxy目录下执行:bazel-bin/src/envoy/envoy -help进行验证。5.2 Istio1.5.0编译如果需要代理访问外网,则编辑docker/Dockerfile.base文件,添加docker代理:env http_proxy " http://<USER>:<PASSWORD>@172.30.68.94:8080"env https_proxy "http:// <USER>:<PASSWORD>@172.30.68.94:8080"env ftp_proxy "http:// <USER>:<PASSWORD>@172.30.68.94:8080"还需要执行以下命令:mkdir -p /etc/systemd/system/docker.service.d/cat > /etc/systemd/system/docker.service.d/proxy.conf <<EOF[Service]Environment="http_proxy=..."Environment="https_proxy=..."Environment="no_proxy=localhost,.local,.svc,..."EOF重启docker:systemctl daemon-reloadsystemctl restart docker编辑Makefile.core.mk文件,添加对aarch64的支持:else ifeq ($(LOCAL_ARCH),aarch64) TARGET_ARCH ?= arm64编辑bin/init.sh,将所有的amd64修改为arm64。然后执行以下命令:sed -i 's/x86_64/aarch64/g' pilot/docker/Dockerfile.proxyv2sed -i 's/gcr.io\/distroless/discolix/g' $(find . -name Dockerfile.*)编辑tools/istio-docker.mk,删掉不需要的docker:docker.app docker.app_sidecar docker.test_policybackend docker.kubectl下载源码并且编译(需要先安装docker):git clone https://github.com/istio/istio.git -b 1.5.0BUILD_WITH_CONTAINER=0 USE_LOCAL_PROXY=1 make build V=1TAG=1.5.0 BUILD_WITH_CONTAINER=0 USE_LOCAL_PROXY=1 make docker.baseTAG=1.5.0 BUILD_WITH_CONTAINER=0 BASE_VERSION=1.5.0 USE_LOCAL_PROXY=1 make docker BUILD_WITH_CONTAINER=0 USE_LOCAL_PROXY=1 make build V=1执行完成后会有一个out目录。后面两个docker编译完成后可通过docker images命令查看。6 1.4.7版本编译6.1 Istio-proxy-1.4.7下载源码:git clone https://github.com/istio/proxy.git -b 1.4.7cd proxyGN=/usr/bin/gn \NINJA=/usr/bin/ninja \make build_envoy VERBOSE=1 SHELL="/bin/bash -x" BAZEL_BUILD_ARGS="-s --sandbox_debug --verbose_failures --cpu aarch64" -j20编译报错如下:提示不支持aarch64架构,查看Makefile文件,可以看到其实是支持arm64的,编辑Makefile文件,添加:else ifeq ($(LOCAL_ARCH),aarch64) TARGET_ARCH ?= arm64后续编译步骤和修改参照istio-proxy-1.5.0的即可。6.2 Istio-1.4.7下载源码并且编译(需要先安装docker):git clone https://github.com/istio/istio.git -b 1.4.7cd istio如果需要代理访问外网,则编辑docker/Dockerfile.base文件,添加docker代理:env http_proxy ""env https_proxy ""env ftp_proxy ""重启docker:systemctl daemon-reloadsystemctl restart docker编辑Makefile文件,添加对aarch64的支持:else ifeq ($(LOCAL_ARCH),aarch64) TARGET_ARCH ?= arm64编辑Makefile.core.mk文件,添加对aarch64的支持:else ifeq ($(LOCAL_ARCH),aarch64)GOARCH_LOCAL := arm64编辑bin/init.sh,将所有的amd64修改为arm64。然后执行以下命令:sed -i 's/x86_64/aarch64/g' pilot/docker/Dockerfile.proxyv2sed -i 's/gcr.io\/distroless/discolix/g' $(find . -name Dockerfile.*)编辑tools/istio-docker.mk,删掉不需要的docker:docker.app docker.app_sidecar docker.test_policybackend docker.kubectl执行编译命令:BUILD_WITH_CONTAINER=0 USE_LOCAL_PROXY=1 make build V=1TAG=1.4.7 BUILD_WITH_CONTAINER=0 USE_LOCAL_PROXY=1 make docker.baseTAG=1.4.7 BUILD_WITH_CONTAINER=0 BASE_VERSION=1.4.7 USE_LOCAL_PROXY=1 make docker执行第一个编译命令会要求输入git账号密码:编辑go.mod,删除下图所示内容:replace istio.io/operator => github.com/istio-private/operator v0.0.0-20200323204721-49487c6ada25需要注意一下第一条编译命令生成的out目录的位置:如果找不到可以尝试使用find命令进行搜索。
-
【功能模块】华为鲲鹏920处理器所在服务器上编译内核源码问题【操作步骤&问题现象】1、参考步骤https://support.huaweicloud.com/prtg-robox-kunpengcps/kunpengrobox920_02_0009.html2、下载其中的linux_4.15.0.orig.tar.gz、linux_4.15.0-65.74.diff.gz、linux_4.15.0-65.74.dsc三个源码文件,放到“/home/compiler/”目录。3、当前目录下生成源码目录linux-4.15.0。执行命令出错:dpkg-source -x linux_4.15.0-65.74.dsc【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
【功能模块】搭建robox容器方案平台【操作步骤&问题现象】1、按照说明安装ubuntu18.04.1 (https://support.huaweicloud.com/prtg-robox-kunpengcps/kunpengrobox920_02_0002.html)2、挂载虚拟cdrom,引导到了这个界面,按回车后,就一直黑屏了,等很长一段时间还是黑屏,【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
【功能模块】【操作步骤&问题现象】手册上说openstak也可以单机部署 一台设备上跑 那么这个是指在一台服务器上起3个虚拟机 然后这三个虚拟机分别承担这几个节点的作用,还是说直接把这几个节点全部安装在这一台设备上,这台设备就是这四个节点?【截图信息】【日志信息】(可选,上传日志内容或者附件)
yd_299783642
发表于2022-03-30 10:50:51
2022-03-30 10:50:51
最后回复
chuangzhijian@汪汪队
2022-03-30 14:15:56
428 2 -
### 环境要求 | 项目 | 说明 | | ------ | :----------------------------------------------------------- | | 服务器 | TaiShan 200服务器(型号2280) | | CPU | 华为鲲鹏920处理器 | | 硬盘 | 进行性能测试时,数据目录需使用单独硬盘,即一个系统盘,一个数据盘(数据盘可选用性能较好的SSD盘,NVMe盘等),至少两块硬盘。非性能测试时,直接在系统盘上建数据目录即可。具体硬盘数量根据实际需求配置。 | | 网络 | 通外网,有在线Yum源,有pip源。 | ### 操作系统 | 项目 | 版本 | 备注 | | ----------------------------------- | ---------------- | ------------------ | | Kylin Linux Advanced Server release | V10 SP1 (Tercel) | cat /etc/*-release | | Kylin Linux Advanced Server release | V10 SP2 (Sword) | cat /etc/*-release | ### 安装依赖 #### Yum可以安装的依赖包 ```shell yum -y install gcc gcc-c++ bzip2-devel openssl-devel \ libcurl-devel readline-devel perl-ExtUtils-Embed \ libxml2-devel openldap-devel pam pam-devel \ perl-devel libyaml libffi-devel bison \ zstd zstd-devel apr-devel libevent-devel \ libyaml-devel libedit-devel flex-devel cmake ``` #### Python依赖 ##### !!使用python2,不要用python3 ```shell yum install -y python-devel python-pip ``` 如果没有外网,需要安装setuptools,python的依赖包只能下源码然后编译安装。 ##### 检查python和pip版本,是不是python2。 ```shell python --version pip --version ``` ##### python依赖包 ```shell pip install psutil==5.9.0 pip install pbr==5.8.1 pip install lockfile==0.12.2 pip install pycparser==2.21 pip install cffi==1.15.0 pip install six==1.16.0 pip install bcrypt==3.2.0 pip install PyNaCl==1.5.0 pip install ipaddress==1.0.23 pip install enum34==1.1.10 pip install cryptography==36.0.2 pip install epydoc==3.0.1 ``` ##### cryptography-36.0.2 这个包安装可能会提示缺少openssl的一些头文件和库文件,需要装一下openssl-devel。 ```shell yum install openssl-devel pip install cryptography==36.0.2 ``` #### 安装Xerces 1. 下载源码包 下载地址:https://github.com/greenplum-db/gp-xerces/tree/v3.1.2-p1 切换版本到v3.1.2-p1,下载zip。 2. 源码包上传服务器并解压 ```shell unzip gp-xerces-3.1.2-p1.zip cd /gp-xerces-3.1.2-p1/ ``` 3. 编译安装`gp-xerces` ```shell ./configure # 48线程并行编译 make -j48 # 安装 make install ``` #### 安装re2c 1. 下载源码包 下载地址:https://github.com/skvadrik/re2c/tree/2.0.3 切换到版本2.0.3,下载zip。 2. 源码包上传服务器并解压 ```shell unzip re2c-2.0.3.zip cd re2c-2.0.3 ``` 3. 编译安装`re2c` ```shell ./autogen.sh ./configure # 48线程并行编译 make -j48 # 安装 make install ``` #### 安装ninja 1. 下载源码包 下载地址:https://github.com/ninja-build/ninja/tree/v1.10.1 切换到版本v1.10.1,下载zip。 2. 源码包上传服务器并解压 ```shell unzip ninja-1.10.1.zip cd ninja-1.10.1 ``` 3. 编译ninja ```shell ./configure.py --bootstrap ``` 4. 将ninja可执行文件拷贝到`/usr/bin`目录下 ```shell cp ninja /usr/bin/ ``` #### 安装gporca 1. 下载源码包 下载地址:https://github.com/greenplum-db/gporca/tree/v3.65.3 切换到版本:v3.65.3,下载zip。 2. 源码包上传服务器并解压 ```shell unzip gporca-3.65.3.zip cd gporca-3.65.3 ``` 3. 编译安装`gporca` ```shell cmake -GNinja -H. -Bbuild ``` 4. 修改源码文件一行代码 ```shell vim libgpos/src/common/CStackDescriptor.cpp ``` 将第167行注释掉。  5. 安装 ```shell ninja install -C build ``` 6. 添加`/usr/local/lib`到`/etc/ld.so.conf`文件 ```shell echo /usr/local/lib >> /etc/ld.so.conf ldconfig ``` ### 配置安装环境 #### 关闭防火墙 1. 停止防火墙 ```shell systemctl stop firewalld.service ``` 2. 关闭防火墙 ```shell systemctl disable firewalld.service ``` 3. 查看防火墙 ```shell systemctl status firewalld.service ``` #### 修改SELinux 1. 修改配置文件 ```shell sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config ``` #### 创建组和用户 1. 创建gpadmin用户 ```shell groupadd gpadmin useradd -g gpadmin gpadmin ``` 2. 设置gpadmin用户密码,请根据提示输入并记录密码 ```shell passwd gpadmin ``` #### 创建数据目录并授权 1. 创建的数据目录“/data”和进程所需的相关目录 ```shell mkdir /data mkdir -p /data/gpdb/segdata mkdir -p /data/gpdb/master ``` 2. 给数据目录授权gpadmin用户和组 ```shell chown -R gpadmin:gpadmin /data/gpdb/segdata chown -R gpadmin:gpadmin /data/gpdb/master ``` ### 编译安装 **注意,先配置好用户和目录再编译安装**。 1. 下载源码包 下载地址:https://github.com/greenplum-db/gpdb/tree/6.0.0 切换版本到6.0.0,下载zip。 2. 源码包上传服务器并解压 ```shell unzip gpdb-6.0.0.zip cd gpdb-6.0.0 ``` 3. configure ```shell # prefix 用于指定软件的安装路径。本次安装路径为:/usr/local/gpdb。 # with-python 构建Python模块(PL/Perl)。 # with-xml 用于支持xml。 ./configure --with-perl --with-python --with-libxml --prefix=/usr/local/gpdb ``` 4. 编译安装`gpdb` ```shell # 48线程并行编译 make -j48 # 安装 make install ``` ### 运行与验证 #### 配置并启动数据库 ##### 配置环境变量 1. 配置环境变量 ```shell vim /home/gpadmin/.bash_profile # 在文件末尾添加如下内容 source /usr/local/gpdb/greenplum_path.sh export PGPORT=5432 export MASTER_DATA_DIRECTORY=/data/gpdb/master/gpseg-1 ``` 其中的`greenplum_path.sh`,设置`GPHOME`和`LD_LIBRARY_PATH`环境变量,`MASTER_DATA_DIRECTORY`为`master`数据目录,本例为`/data/gpdb/master/gpseg-1` 2. 使环境变量配置生效 ```shell source /home/gpadmin/.bash_profile ``` ##### 初始化数据库 1. 修改主机名,这里修改为master 注意:主机名为默认主机名localhost时,执行步骤4会报错,本例中我们将主机名修改为master。具体主机名称以实际规划为准。 ```shell hostname master echo master > /etc/hostname ``` logout退出登录,重新连接后生效。 2. 将主机名的map写入到“/etc/hosts”中,具体IP地址和主机名以实际情况为准。本例中,IP地址为192.168.202.206,主机名为master。 ```shell echo 192.168.202.206 master >>/etc/hosts ``` 3. 切换至gpadmin用户 ```shell su - gpadmin ``` 4. 配置集群节点间互信 交换集群中所有机器的ssh密钥,本例是单机,只有一台。其中master为主机名,以实际情况为准。 ```shell gpssh-exkeys -h 'master' ``` 5. 退出到root用户 ```shell exit ``` 6. 创建集群主机配置文件 创建集群主机配置文件`hostfile`,包括集群所有主机名,本例是单机,只有一台。其中master为主机名,以实际情况为准。 ```shell echo master >> /data/gpdb/hostfile ``` 7. 切换至`gpadmin`用户 ```shell su - gpadmin ``` 8. 创建初始化配置文件`init.config` ```shell vim /home/gpadmin/init.config ``` 添加如下内容: ```shell ARRAY_NAME="Greenplum Cluster" # egment数据库前缀名 SEG_PREFIX=gpseg # egment数据库起始端口号 PORT_BASE=40000 # segments数据目录,有几个DATA_DIRECTORY, 每个节点上便会启动几个segment,本例为2个segment declare -a DATA_DIRECTORY=(/data/gpdb/segdata /data/gpdb/segdata) # master主机名 MASTER_HOSTNAME=master # master数据目录 MASTER_DIRECTORY=/data/gpdb/master # aster端口号,也是对外业务端口号 MASTER_PORT=5432 TRUSTED_SHELL=ssh CHECK_POINT_SEGMENTS=8 ENCODING=UNICODE DATABASE_NAME=gpdb # 群配置文件,hostfile对应上面步骤6创建的文件名 MACHINE_LIST_FILE=/data/gpdb/hostfile ``` 9. 执行初始化命令 ```shell gpinitsystem -c /home/gpadmin/init.config -a ``` #### 测试数据库功能 ##### 登录数据库 ```shell psql -d postgres ``` ##### 测试增删查改 ```sql # 测试创建数据库 create database huawei; # 查看数据库列表 \l # 切换数据库到huawei \c huawei # 建表 create table test( id int primary key not null, name varchar(255) not null, age int not null, address text, salary real ); # 插入数据 insert into test(id, name, age, address, salary) values (1, 'Paul', 32, 'China', 20000.00); # 查询数据 select * from test; select id, name, age from test; # 修改数据 update test salary=18000 where id=1; update test salary=16000 where age>30; # 删除数据 delete from test where id=1; # 删表 drop table test; # 删除数据库 drop database huawei; ``` ##### 测试函数调用 ```sql # 创建函数 CREATE FUNCTION mytest(num int) RETURNS int AS $$ BEGIN RETURN num * 2; END; $$ LANGUAGE plpgsql volatile cost 100; # 调用函数 select mytest(2); ``` ### 安装报错与解决方案 ##### Your ORCA version is expected to be 3.XX.XXX  每一个版本的`gpdb`版本都对应有指定版本的`gporca`。 ```shell cd gpdb-6.0.0/depends # 查看当前gpdb依赖的gpraca版本 cat conanfile_orca.txt ```  可以看到,6.0.0版本的`gpdb`以来的是3.65.0版本的`gporca`,需要将之前装的`gporca`卸载并安装正确版本。 安装完之后一定要在`ld.so.conf`文件追加gporca库文件的安装路径,默认是`/usr/local/lib`。 ```shell echo /usr/local/lib >> /etc/ld.so.conf ldconfig ``` 然后重新编译`gpdb`。 ##### configure: error: Library requirements (curl) not met.  缺少libcurl-devel,yum安装一下,麒麟V10 SP2有这个包。 ```shell yum -y install libcurl-devel ``` ##### 找不到zstd `zstd 1.4.3`可以yum安装。yum找不到那就只能编译安装。 编译安装前要注意,先安装`lz4-1.7.3`。 ##### 找不到libcurl ```shell # 手动编译安装 # libcurl依赖openssl,编译安装前先安装openssl ``` ##### 找不到openssl的头文件 ```shell # 麒麟系统自带openssl,但比较精简,缺少一些头文件库文件 # 如需编译安装,先看系统自带的openssl版本 openssl version # 按对应版本下载安装,安装到自定义路径,如/usr/local/openssl,不要替换系统的openssl # 安装之后添加环境变量 # GCC头文件搜索目录 export C_INCLUDE_PATH=/usr/local/openssl/include:$C_INCLUDE_PATH # G++头文件搜索目录 export CPLUS_INCLUDE_PATH=/usr/local/openssl/include:$CPLUS_INCLUDE_PATH # 动态库搜索目录 export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH # 静态库搜索目录 export LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH ``` ### 数据库管理 ##### 数据库管理 - 以gpadmin用户启动Greenplum数据库,并按提示输入Y,确定启动 ```shell gpstart ``` - 以gpadmin用户关闭Greenplum数据库,并按提示输入Y,确定关闭 ```shell gpstop ``` - 以gpadmin用户登录数据库 ```shell psql -d 数据库> ``` - 以gpadmin用户查看mirror的状态 ``` gpstate -e ``` - 以gpadmin用户查看standby master的状态 ```shell gpstate -f ``` - 以gpadmin用户查看整个GP集群状态 ```shell gpstate -b ``` - 以gpadmin用户查看整个GP的版本 ```shell gpstate -i ``` ##### 修改Segment配置参数 - 以gpadmin用户修改Segment配置参数 - 方法一:在目标segment的postgresql.conf文件中更新参数。 ```shell echo gp_vmem_protect_limit=12888 >> postgresql.conf ``` - 方法二:使用gpconfig工具修改greenplum segment参数。 ```shell gpconfig -c gp_vmem_protect_limit -v 12888 ``` - 以gpadmin用户重启Greenplum数据库,使配置生效,重启过程中,输入Y,确认重启。 ```shell gpstop -r ``` ##### 修改Master配置参数 - 以gpadmin用户修改master配置参数。 ```shell echo gp_vmem_protect_limit=12888 >> postgresql.conf ``` - 以gpadmin用户重启Greenplum数据库,使配置生效,重启过程中,输入Y,确认重启 ```shell gpstop -r ``` ##### 备份数据库 1. 备份 - 以`gpadmin`用户登录数据库。 ```shell su - gpadmin ``` - 执行命令进行备份单个数据库。其中`databasename`为要备份的数据库名称,需存在于数据库中;`databasename.dump`为备份以后的文件名称,默认备份在当前目录下。 ```shell pg_dump -Fc databasename > databasename.dump ``` - 备份整个数据库。其中all.dump为备份以后的文件名称,默认备份在当前目录下。 ```shell pg_dumpall > all.dump ``` 2. 恢复 - 以`gpadmin`用户登录数据库。 ``` su - gpadmin ``` - 执行命令进行恢复单个数据库。其中`databasename`为要恢复的数据库名称,需存在于数据库中;`databasename.dump`为用于恢复的文件,具体路径以实际为准。 ```shell pg_restore -d databasename databasename.dump ``` - 恢复整个数据库。其中`all.dump`为用于恢复的文件,具体路径以实际为准。 ``` psql -f all.dump postgres ``` ### 日志过滤 ##### 过滤PANIC级别的日志 ```shell su - gpadmin # 检查 Master 日志文件 WARNING、 ERROR、 FATAL 或 PANIC 级别的日志信息 gplogfilter -t # 指定时间段 gplogfilter -b '2022-03-29 00:00' -e '2022-03-30 00:00' # 检查PANIC级别的日志 gplogfilter -t -f PANIC # 检查2022-03-29一天内的PANIC日志 gplogfilter -b '2022-03-29 00:00' -e '2022-03-30 00:00' -t -f PANIC ``` ### 参考文档 Greenplum 6.0.0 移植指南 https://www.hikunpeng.com/document/detail/zh/kunpengdbs/prtg/kunpenggreenplum_02_0001.html Greenplum 6.0.0 安装指南 https://support.huaweicloud.com/instg-kunpengdbs/kunpenggreenplum_03_0001.html GreenplumDatebase GitHub README.md https://github.com/greenplum-db/gpdb/tree/5.21.0 官方文档 http://docs-cn.greenplum.org/v6/homenav.html Greenplum常见问题的分析与处理 https://cloud.tencent.com/developer/article/1780168
-
本期精彩看点:鲲鹏软件迁移系列基础知识有哪些,如何获取?鲲鹏文档指引:https://www.hikunpeng.com/document?data=guide上一篇:如何快速进行鲲鹏应用迁移调优实验?下一篇:如何分析解决鲲鹏技术疑难问题?
-
沙箱实验《基于华为云鲲鹏弹性云服务器发布地图服务》即将于2022年3月23日正式停止服务,实验下线后将无法开始实验,请知悉。感谢您的关注,欢迎到沙箱实验室,体验更多精彩实验!发布日期:2022年3月22日
-
按照安装模拟器 安装指南(CentOS 7.6)进行AVD运行环境搭建,在升级mesa的步骤时,遇到如下错误,报错如下:meson --prefix=/usr -Dtexture-float=true -Dgallium-drivers=radeonsi,swrast -Ddri-drivers=radeon,swrast -Dplatforms=drm,x11 -Dglx-tls=true -Dshared-glapi=true -Ddri3=true -Dlmsensors=true -Dgbm=true -Dxa=true -Dosmesa=gallium -Dvdgpu=true -Dnine=true -Dva=true -Dlibglvnd=true -Dllvm=true -DCFLAGS="-fsigned-char -O2" -DCPPFLAGS="-fsigned-char -O2" -DCXXFLAGS="-fsigned-char -O2" -Dautotools=trueThe Meson build systemVersion: 0.61.3Source dir: /home/mesa-19.3.5Build dir: /home/mesa-19.3.5/buildBuild type: native buildProgram python found: YES (/usr/bin/python)WARNING: You should add the boolean check kwarg to the run_command call. It currently defaults to false, but it will default to true in future releases of meson. See also: https://github.com/mesonbuild/meson/issues/9300../meson.build:21:0: ERROR: Unknown options: "CFLAGS, CPPFLAGS, CXXFLAGS, autotools, glx-tls, libglvnd, nine, texture-float, va, vdgpu, xa"A full log can be found at /home/mesa-19.3.5/build/meson-logs/meson-log.txt遇到该问题后,通过联系华为ARM原生专家已进行紧急处理,目前该问题已处理完成1、通过专家排查,发现机器存在多个yum源文件,安装指南中已写明注意事项:由于安装部署机器为共用机器,可能有同事对yum源进行了替换或更新,导致安装了非官方的一些基本的软件库,从而导致后续编译出现了问题处理方案: 1、将多余yum源进行删除,只保留系统默认yum源,更新本地yum缓存 2、将之前预安装的编译依赖包进行卸载,重新已系统默认yum源进行安装2、安装部署机器在硬件上没有使用GPU,而是使用CPU进行渲染,在经过ARM原生专家的排查下,发现没有安装显卡,编译mesa驱动时编译的是radeon显卡驱动,有可能导致跑起来会有问题处理方案: 1、把mesa编译时的“-Ddri-drivers=radeon,swrast”这个编译选项改为“-Ddri-drivers=swrast”然后继续指南上下面的步骤在ARM原生专家的帮助下,目前已处理mesa编译问题,环境已成功部署,非常感谢ARM原生专家的鼎力帮助!
-
【功能模块】gdb调试【操作步骤&问题现象】1、gdb启动调试运行时,打印警告warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.2、应用起来后,之前设置的断点没有生效,无法进入预设的断点gdb升级版本到11.2也不能解决这个问题【截图信息】gdb --versionGNU gdb (GDB) 11.2Copyright (C) 2022 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.gcc --versiongcc (GCC) 7.3.0Copyright (C) 2017 Free Software Foundation, Inc.本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;包括没有适销性和某一专用目的下的适用性担保。【日志信息】(可选,上传日志内容或者附件)
-
分析已安装软件(Ragel)操作步骤点击如下链接获取源码包,并完成在x86服务器上的安装。https://fossies.org/linux/misc/ragel-6.10.tar.gz说明:在x86服务器上的安装命令为:./configure && make && make install登录“Porting Advisor”。扫描安装在x86平台上的ragel-6.10软件。选择软件安装目录和目标操作系统,如图 扫描ragel-6.10所示。图1 扫描ragel-6.10单击“开始扫描”。查看扫描报告,如图 扫描报告所示。图1 扫描报告在kunpeng平台上,按照迁移意见,下载安装ragel_6.10-1_arm64.deb,如图 安装ragel_6.10-1_arm64.deb所示。图1 安装ragel_6.10-1_arm64.deb ----结束
-
【求助交流】1、我在两个鲲鹏生态2个地方,发现2P 鲲鹏920 CPU 片间Hydra接口速率描述的不相同,还请确认究竟应该速率多少?1)来源一:文档:华为鲲鹏920处理器 用户手册:第三卷 硬件指南 03速率:2P 片间速率3 * 30 = 90Gb/s2)来源二:书籍:鲲鹏处理器架构与编程-戴志涛-最新版内容:2P 片间速率480 Gb/s【截图信息】
-
迁移概述背景介绍在国产替代的大背景下,鲲鹏计算平台是一个非常有潜力的产业。为了解决开发者将应用从x86平台向鲲鹏平台移植的过程中遇到的一系列的痛点问题(例如:分析过程投入工作量大,周期长,需反复试错定位,准确率也低下,而且要求移植人员专业技能高等),推出了鲲鹏代码迁移工具(Porting Advisor),帮助开发者加速将x86环境下的应用迁移至鲲鹏平台。本文总结了鲲鹏代码迁移工具(Porting Advisor)的软件包分析和重构的实际使用经验,期望能帮助开发者了解如何使用工具,提高开发者的软件迁移效率。鲲鹏代码迁移工具介绍鲲鹏代码迁移工具(Porting Advisor)支持如下六大功能:分析软件安装包扫描x86平台软件安装包,识别安装包对系统SO的依赖和包内部的SO、JAR依赖,支持的软件安装包格式包括RPM、DEB、JAR、WAR、ZIP、TAR、GZIP。该功能位于工具一级菜单“软件迁移评估”下,工具安装在x86环境和鲲鹏环境下时均可用。分析已安装软件扫描x86环境中用户已安装的软件,识别已安装软件的SO、JAR依赖关系。该功能位于工具一级菜单“软件迁移评估”下,仅当工具安装在x86环境下时可用。分析源代码扫描x86平台软件的C/C++/Fortran/汇编源代码,识别源代码中的SO依赖关系,扫描需要修改的代码行并给出修改建议,根据系统设定的代码修改效率,给出评估的工作量,供领导层进行项目决策。该功能位于工具一级菜单“源码迁移”下,工具安装在x86环境和鲲鹏环境下时均可用。软件包重构对用户提供的x86平台RPM包、DEB包中x86平台相关的so文件、jar包进行替换,重构输出可用于鲲鹏平台的RPM包、DEB包。重构期间需要的鲲鹏版本的so文件、jar包需要用户通过依赖包上传功能在重构任务创建过程中上传。如果这些文件是可以直接从华为云镜像源下载的,并且用户安装鲲鹏代码迁移工具的服务器可联网,则用户创建重构任务时可以授权工具重构期间连接到华为云镜像源进行自动下载。该功能位于工具一级菜单“软件包重构”下,仅当工具安装在鲲鹏环境下时可用。专项软件迁移一级菜单“专项软件功能”下,针对已经完成迁移的部分BoostKit组件,用户可以通过专项软件迁移功能进行重复迁移。迁移过程中的每个执行步骤都是可视的,用户可根据自己的需求定制由工具执行其中的某些步骤而自己手工执行另外一些步骤,从而达到对这些组件的定制化的目的。该功能仅当工具安装在鲲鹏环境下时可用。增强功能一级菜单“增强功能”下提供了64位代码迁移预检、字节对齐检查、弱内存序检查修复三项子功能。64位代码迁移预检功能针对32位老旧代码执行检查动作,从编译器层面识别编译出64位应用时代码中存在的修改点,该功能仅当工具安装在x86环境下时可用。字节对齐检查功能辅助用户检查应用从32位模式改为64位模式时,数据结构定义方面的变化,以便用户优化代码,该功能仅当工具安装在x86环境下时可用。弱内存序检查修复则提供了编译器自动修复工具和静态检查工具两个选项,分别供用户在GCC编译以及工具运行两种模式下使用以修复ARM架构下独有的应用弱内存序问题,该功能仅当工具安装在鲲鹏环境下时可用。环境要求根据各功能的平台依赖性,需要准备如表 鲲鹏平台环境所示的环境。表1 鲲鹏平台环境项目说明服务器TaiShan 200 2280 服务器(等同于其它基于鲲鹏916或者鲲鹏920的服务器)CPU鲲鹏920 96核处理器OSCentOS 7.6安装的工具Porting Advisor 2.2.T3可使用场景分析软件安装包分析源代码软件包重构专项软件迁移弱内存序检查修复前提条件服务器和操作系统正常运行。PC端已经安装SSH远程登录工具。Porting Advisor已在准备好的x86平台环境和鲲鹏平台环境中完成安装并正常运行。待迁移的相关软件包、源代码已准备就绪。迁移计划本文将总结演示重构开源软件atlas软件包kafka-2.4.1-1.el7.noarch.rpm。说明:本次重构动作和验证动作均可通过鲲鹏平台环境完成。重构开源软件atlas软件包kafka-2.4.1-1.el7.noarch.rpm的步骤演示,将有助于读者了解在有x86平台rpm包、deb包需要修改重构为鲲鹏平台的包时,如何才能完成这个迁移过程。将利用Porting Advisor的软件安装包分析功能对获取到的kafka-2.4.1-1.el7.noarch.rpm进行扫描,获取其依赖关系和可迁移性分析结果。根据Porting Advisor的软件安装包分析功能分析得到的kafka-2.4.1-1.el7.noarch.rpm依赖关系去准备重构为鲲鹏平台RPM包时需要的SO库和JAR包。利用准备好的资源包和RPM包,通过Porting Advisor的软件包重构功能,完成鲲鹏版本kafka-2.4.1-1.el7的RPM包重构工作。针对重构得到的鲲鹏版本kafka-2.4.1-1.el7的RPM包进行简单的验证。重构开源软件atlas软件包操作步骤从https://ci.bigtop.apache.org/view/Releases/job/Bigtop-3.0.0/DISTRO=centos-7,PLATFORM=amd64-slave/lastSuccessfulBuild/artifact/output/kafka/noarch/下载获取待使用的rpm包,如图 kafka-2.4.1-1.el7.noarch.rpm所示。 图1 kafka-2.4.1-1.el7.noarch.rpm双击“kafka-2.4.1-1.el7.noarch.rpm”即可获取本例中所需要的软件包。利用Porting Advisor的分析软件包功能完成对该包的扫描分析。勾选“分析软件包”,单击“上传”,上传前面下载到的kafka-2.4.1-1.el7.noarch.rpm,并点中输入框,选择安装包存放路径为/opt/portadv/portadmin/package/kafka-2.4.1-1.el7.noarch.rpm,如图 Porting Advisor所示。 图2 Porting Advisor 4. 单击“开始分析”,进行分析并得到扫描分析报告,如图 扫描分析报告所示。 图3 扫描分析报告 准备依赖库从图 扫描分析报告1和图 扫描分析报告2提供的依赖库信息看,所依赖的包中,有2个是安装过程中需要的可执行文件,有3个是被扫描的rpm包内包含的jar包。报告中针对rpm包内包含的jar包提供了华为鲲鹏产品官方maven仓库中的下载链接,直接点击下载即可。 图4 扫描分析报告1 图5 扫描分析报告2 重构软件包操作步骤打开软件包重构功能页面后,通过“上传”按钮将待重构的RPM包kafka-2.4.1-1.el7.noarch.rpm上传到服务器,如图 选择待重构软件包所示。 图6 选择待重构软件包 2. 单击“下一步”,进入“配置依赖文件”步骤,选择手工上传依赖文件、勾选“授权访问外部网络获取重构软件包需要的依赖文件”以允许工具在重构过程中自动连接到各OS发行版的 官方网站或者鲲鹏Maven仓库在华为云镜像源上的下载地址下载需要的依赖文件,如图 配置依赖文件所示。 图7 配置依赖文件 3. 单击“下一步”,进入“执行重构”步骤,这里需要再进行最后一次确认才能开始重构操作,如图 重构任务执行中所示。 图1 重构任务执行中 注意: 如果在执行本步骤操作前,服务器上没有安装rpmrebuild,则会遇到如图 rpmrebuild未安装所示的报错。此时用户需要自行下载rpmrebuild安装包,在工具所在安装服务器上安装该 组件,然后重试重构动作。 4. 重构成功后,单击“下载重构软件包”按钮即可下载重构好的软件包atlas-metadata_3_1_0_0_78-1.1.0.3.1.0.0-78.aarch64.rpm,如图7 下载重构软件包所示。 图1 下载重构软件包 也可以在关闭重构结果窗口后,从历史记录中下载重构结果。验证重构后RPM包kafka安装包在鲲鹏环境安装时,需要依赖bigtop-utils、zookeeper等包,读者在执行本章节验证前,需完成环境搭建工作,在相关的环境依赖具备条件下,kafka的安装只需要通过最普通的RPM包安装命令(rpm –ivh xx.rpm)即可完成。本节重点介绍环境搭建后如何进行功能验证。安装kafka 切换到终端工具 执行以下命令:cd /opt/portadv/portadmin/data/20220310175550/ 说明:此路径可以从第4步重构成功后的右下角弹窗中显示的软件包存放路径获取。 rpm –ivh kafka-2.4.1-1.el7.noarch.rpm 启动zookeeper 执行以下命令启动zookeeper: cd /usr/local/zookeeper/bin ./zkServer.sh start 功能验证 命令行方式创建一个主题 cd /usr/lib/kafka/bin kafka-topics.sh --zookeeper localhost:2181 --create --topic sandbox-experiment -partitions 2 --replication-factor 1 启动消费者服务 kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic sandbox-experiment 启动生产者服务 kafka-console-producer.sh --broker-list localhost:9092 –topic sandbox-experiment 并发送消息“beginning hello kafka” 消费者服务收到消息 证明重构后的kafka-2.4.1-1.el7.noarch.rpm软件包,在鲲鹏服务器上课正常安装使用。 -----结束
-
简介结构体字节对齐检查工具作为“鲲鹏代码迁移工具”的一个组件,帮助开发人员查找源码中存在的字节对齐问题。wtdbg是一种更快更好的基因组算法,使用C语言编写。本实践使用“鲲鹏代码迁移工具”分析C语言编写的项目,并给出合理的修改建议,帮助用户解决字节对齐问题。语言:C,C++开源协议:GPL建议的版本“鲲鹏迁移工具”建议使用版本为2.3.0。环境要求硬件要求硬件要求如表1所示。表1 硬件要求项目说明服务器基于鲲鹏916/920的服务器CPU四核2.5GHz及以上内存系统空闲内存要求8GB及以上说明为了使多任务并发正常执行,要求使用八核2.5GHz CPU,16GB及以上内存配置的服务器。软件要求软件要求如表2所示。表2 软件要求项目下载地址Porting-advisor_2.3.0_Kunpeng-linux.tar.gzhttps://mirror.iscas.ac.cn/kunpeng/archive/Porting_Dependency/Packages/Porting-advisor_2.3.0_Kunpeng-linux.tar.gzNginx 1.14.2https://github.com/nginx/nginx/releases/tag/release-1.14.2操作系统要求操作系统要求如表3所示。表3 操作系统要求项目版本下载地址CentOS8.0https://www.centos.org/download/Kernel4.18.0-80.el8https://www.centos.org/download/GCC4.8.5https://github.com/gcc-mirror/gcc/releases?after=releases%2Fgcc-9.3.0Nginx专项软件迁移前提条件已安装鲲鹏代码迁移工具。操作步骤登录鲲鹏代码迁移工具Web界面。在左边标题栏中,选择“专项软件迁移”。打开“专项软件迁移”页面,在“迁移前必读”对话框中,勾选“我已阅读以上文字”,单击“确认”,进入专项软件迁移页面。单击“Web”页签下的Nginx,进入到Nginx迁移界面。如图 Nginx所示。图2 Nginx检查环境符合要求, 在“执行步骤”区域选择需要执行的步骤,单击“开始迁移”。按钮置灰右下角展示迁移进度执行步骤。如图 Nginx迁移中界面进度展示所示。图3 Nginx迁移中界面进度展示迁移完成后,单击右下角的“下载迁移文件”按钮,下载迁移文件。如图 Nginx迁移完成文件下载所示。图4 Nginx迁移完成文件下载---结束迁移结果验证环境rpm安装Nginx迁移包,如图 Nginx rpm安装所示。图5 Nginx rpm安装异常情况解决方式如果服务器环境不符合要求,可以根据2-环境要求中的要求进行环境优化,根据指定链接地址下载所需的系统组件以及迁移需要迁移文件。服务器环境网络受限。可以通过以下操作解决:开始迁移前取消勾选执行步骤:步骤1,步骤2,步骤10。上传nginx源码包和openssl源码包到“安装目录/portadv/resource/migration/WEB_Nginx_1.14.2_leg”路径下,并给nginx源码包和openssl源码包porting用户执行权限,如图 Nginx rpm安装所示。图6 Nginx rpm安装开始迁移。
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签