• [中间件] 【鲲鹏翱翔】应用中间件02-Nginx移植安装指南
    1. 简介Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。2. 部署环境Packet NameVersion版本DetailCentOSCentOS   7.5 with Armarm通用计算增强型 | rc3.xlarge.4 | 4vCPUs | 14GBNginx1.6none3. 安装部署yum源安装Nginxyum install nginx查看nginx版本nginx -v编译安装Nginx安装常用的系统组件,安装相应的库:yum   install unzip gcc gcc-c++ openssl    openssl-devel glibc-static libstdc++-static lzip libffi-devel zlib   zlib-devel libtool安装PCREPCRE 作用是让 Nginx 支持 Rewrite 功能。从 http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz获取软件安装包: wget  http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz       解压pcre-8.35.tar.gztar   zxvf pcre-8.35.tar.gz进入解压路径,进行编译安装:cd   pcre-8.35./configure   –-prefix=/usr/local/pcre #/usr/local/pcre安装路径make &&   make install 查看pcre版本:[pcre-config --version安装nginx从http://nginx.org/download/获取软件安装包: wget  http://nginx.org/download/nginx-1.6.2.tar.gz       解压nginx-1.6.2.tar.gztar  -zxvf nginx-1.6.2.tar.gz进入解压路径,进行编译安装:cd   nginx-1.6.2./configure   --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module   --with-pcre=/usr/local/pcre-8.35 #pcre的源码所在目录make &&   make install 查看nginx版本:/usr/local/nginx/sbin/nginx -v 4.示例测试创建Nginx运行用户www/usr/sbin/groupadd www /usr/sbin/useradd -g www www配置nginx.conf ,将/usr/local/nginx/conf/nginx.conf替换为以下内容#  cat /usr/local/nginx/conf/nginx.conf---------------------------------------------------user www www;worker_processes 2; #设置值和CPU核心数一致error_log /usr/local/nginx/logs/nginx_error.log crit; #日志位置和日志级别#Specifies the value for maximum file descriptors that can be opened by this process.worker_rlimit_nofile 65535;events{  use epoll;  worker_connections 65535;}http{  include mime.types;  default_type application/octet-stream;  log_format main  '$remote_addr - $remote_user [$time_local] "$request" '               '$status $body_bytes_sent "$http_referer" '               '"$http_user_agent" $http_x_forwarded_for';  #charset gb2312;       server_names_hash_bucket_size 128;  client_header_buffer_size 32k;  large_client_header_buffers 4 32k;  client_max_body_size 8m;       sendfile on;  tcp_nopush on;  keepalive_timeout 60;  tcp_nodelay on;  fastcgi_connect_timeout 300;  fastcgi_send_timeout 300;  fastcgi_read_timeout 300;  fastcgi_buffer_size 64k;  fastcgi_buffers 4 64k;  fastcgi_busy_buffers_size 128k;  fastcgi_temp_file_write_size 128k;  gzip on;  gzip_min_length 1k;  gzip_buffers 4 16k;  gzip_http_version 1.0;  gzip_comp_level 2;  gzip_types text/plain application/x-javascript text/css application/xml;  gzip_vary on;   #limit_zone crawler $binary_remote_addr 10m; #下面是server虚拟主机的配置 server  {    listen 80;#监听端口    server_name localhost;#域名    index index.html index.htm index.php;    root /usr/local/nginx/html;#站点目录      location ~ .*\.(php|php5)?$    {      #fastcgi_pass unix:/tmp/php-cgi.sock;      fastcgi_pass 127.0.0.1:9000;      fastcgi_index index.php;      include fastcgi.conf;    }、    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$    {      expires 30d;  # access_log off;    }    location ~ .*\.(js|css)?$    {      expires 15d;   # access_log off;    }    access_log off;  }}检查配置文件是否正确/usr/local/nginx/sbin/nginx  -t 启动nginx服务/usr/local/nginx/sbin/nginx访问站点http://EIP/可以看到网页                                              5.参考信息     nginx官网:https://nginx.org/     github地址:https://github.com/nginx/nginx 6.FAQ     暂无
  • [C/C++] 鲲鹏_GCC版本升级指南
    1.   简介GCC 编译器是 Linux 下默认的 C/C++ 编译器,大部分 Linux 发行版中都是默认安装的。GCC 编译器通常以 Linux 命令的形式在终端(Shell)中使用。本指南描述了在ARM64,CentOS7.5的环境下升级GCC的过程,可供相关人士参考。2.   部署环境Packet NameVersionCentOSCentOS  7.5 with ArmGCC5.4.07.3.03.   安装部署      3.1  编译升级GCC由于服务器Centos7.5默认安装的GCC版本较低,在某些场景下需要进行升级GCC,版本信息如下:[root@ecs-arm-felix-free01   ~]# gcc --versiongcc   (GCC) 4.8.5去官网下载http://ftp.gnu.org/gnu/gcc/下载GCC 5.4.0的源码压缩包解压安装       解压gcc-5.4.0.tar.gz[root@ecs-arm-felix-free01   ~]# tar -xvf gcc-5.4.0.tar.gz下载安装依赖,下载安装gcc需要的三个依赖[root@ecs-arm-felix-free01   ~]# yum -y install bzip2 wget    # 下载依赖需要使用把bzip2和wget两个命令[root@ecs-arm-felix-free01   ~]# cd gcc-5.4.0/[root@ecs-arm-felix-free01   ~]# ./contrib/download_prerequisites  #   在解压根目录中执行依赖下载完成后,编译更新gcc版本 [root@ecs-arm-felix-free01   ~]# cd ../ && mkdir gcc-build-5.4.0 && cd gcc-build-5.4.0    #执行命令前位于gcc-5.4.0目录下#   执行configure[root@ecs-arm-felix-free01   ~]# ../gcc-5.4.0/configure --enable-checking=release --enable-languages=c,c++   --disable-multilib#   执行编译,make时间1-2小时或更久[root@ecs-arm-felix-free01   ~]# make -j8    #-j8意味8核并行编译;[root@ecs-arm-felix-free01   ~]# make install    #执行安装备注:如果执行过程遇到configure: error: C++ preprocessor "/lib/cpp" fails sanity check,执行[root@ecs-arm-felix-free01   ~]# yum install glibc-headers [root@ecs-arm-felix-free01   ~]# yum install gcc-c++验证是否更新生效[root@ecs-arm-felix-free01   ~]# gcc -versiongcc   (GCC) 5.4.0生成的动态库替换老版本gcc的动态库。[root@ecs-arm-felix-free01   ~]# cp /usr/local/lib64/libstdc++.so.6.0.21 /lib64 [root@ecs-arm-felix-free01   ~]# cd /lib64 & cp libstdc++.so.6 libstdc++.so.6.old[root@ecs-arm-felix-free01   ~]# ln -s libstdc++.so.6.0.21 libstdc++.so.6#执行命令查看最新GLIBCXX_3.4.21[root@ecs-arm-felix-free01   ~]# strings /lib64/libstdc++.so.6 | grep GLIBC    3.2 参考信息     [1] GCC升级版本:https://www.linuxidc.com/Linux/2018-11/155395.htm
  • [中间件] 【鲲鹏翱翔】消息中间件01-RabbitMQ移植指南
    1.   简介RabbitMQ 是一个开源的,在AMQP基础上完成的,可复用的企业消息系统。支持主流的操作系统,linux、windows、macOS等,多种开发语言支持,java、Python、ruby、.net、PHP、C/C++、node.js等。本指导描述了在ARM64架构,CentOS7.5系统下安装RabbitMQ3.7.4的过程,可供相关人士参考。2.   部署环境Packet NameVersion版本CentOSCentOS 7.5 with ARMRabbitMQ3.7.4Erlang20.1.7Socat1.7.23.   安装部署在安装RabbitMQ3.7.4的时候,如果直接使用erlang官网的rpm包安装,会导致RabbitMQ无法识别erlang版本的问题。为了解决这个问题,RabbitMQ团队提供了零依赖的RPM包。在下面的过程中,我们将直接使用源码编译erlang20.1,以解决RabbitMQ的依赖问题。3.1         下载Erlang源码包wget  https://github.com/rabbitmq/erlang-rpm/archive/v20.1.7.1.tar.gztar  -zxvf v20.1.7.1.tar.gz解压后,可以看到erlang-rpm-20.1.7.1文件夹。3.2         依赖安装在系统中安装需要的组件,安装相应的库:yum install -y rpm-build autoconf ncurses-devel openssl-devel socat3.3         编译安装Erlangcd   erlang-rpm-20.1.7.1修改erlang.spec文件vim   erlang.spec在%define OSL_File_Name Erlang_ASL2_LICENSE.txt后面加上%define   debug_package %{nil}保存后退出,进行编译make等待一段时间后,编译完成,切换到RPM包所在目录cd   /RPMS/aarch64安装erlang20.1.7rpm  -ivh erlang-20.1.7.1-1.el7.aarch64.rpm3.4         安装RabbitMQ3.7.4下载RPM包并安装wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.4/rabbitmq-server-3.7.4-1.el7.noarch.rpmrpm –ivh rabbitmq-server-3.7.4-1.el7.noarch.rpm4.   测试设置RabbitMQ服务:systemctl   enable rabbitmq-server #设置服务自动启动systemctl   start rabbitmq-server #启动rabbitmq服务rabbitmq-plugins   enable rabbitmq_management #启用RabbitMQ的管理插件rabbitmqctl   add_user admin admin #设置用户名和密码rabbitmqctl   set_user_tags admin administrator #设置用户角色rabbitmqctl   set_permissions -p / admin “.*” “.*” “.*” #为admin分配权限systemctl   restart rabbitmq-server #重启rabbitmq服务访问http://ip:15672,输入admin,admin,    登录后,可以看到图形操作界面5.   参考信息[1] https://stackoverflow.com/questions/47945559/cant-install-rabbitmq-server-3-7-1-on-centos7-wrong-erlang-version[2] https://www.cnblogs.com/think8848/p/7050606.html6.   FAQ1.编译过程中可能会有相关报错,显示缺少autoconf,socat等,注意在编译前安装相关依赖包yum   install -y rpm-build autoconf ncurses-devel openssl-devel socat2. 在编译过程中遇到下图报错信息:在erlang.spec文件头加上%define   debug_package %{nil}再编译,即可解决问题。
  • [中间件] 【鲲鹏翱翔】消息中间件02-ActiveMQ移植指南
    1、简介Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。ActiveMQ可以支持在ARM环境下运行,无需重新编译。可以从官网下载最新的ActiveMQ包进行解压缩、配置、运行。本指南描述了在ARM64、CentOS的环境下安装配置ActiveMQ的过程,可供相关人士参考。2、环境类别版本配置备注ARM测试服务器CentOS7.4arm通用计算增强型 | rc3.xlarge.4 | 4vCPUs | 14GB在华为云通过公测申请3、ActiveMQ安装3.1.下载安装包可以直接使用wget下载wget https://mirrors.tuna.tsinghua.edu.cn/apache/activemq/5.15.9/apache-activemq-5.15.9-bin.tar.gz或者在windows环境下载,上传到Linux服务器http://www.apache.org/dyn/closer.cgi?filename=/activemq/5.15.9/apache-activemq-5.15.9-bin.tar.gz&action=download3.2.解压缩包tar -zxvf apache-activemq-5.15.9-bin.tar.gz3.3.配置环境变量vi /etc/profile   (在合适的位置添加下面变量)export ACTIVEMQ_HOME=/home/cyw/activemq/apache-activemq-5.15.9   (activemq安装目录)export ACTIVEMQ_BIN=$ACTIVEMQ_HOME/binexport PATH=${PATH}:${ACTIVEMQ_BIN}3.4.环境变量生效与测试Centos里执行以下命令: source /etc/profile3.5.安装java环境yum install java3.6.设置开机启动1. 将ActiveMQ安装目录下的bin中的activemq文件拷贝到修改init.d/目录下2. vi /etc/init.d/activemq 内容添加环境变量:ACTIVEMQ_HOME=/home/cyw/activemq/apache-activemq-5.15.9(activemq安装目录)3.修改activemq执行权限,init.d目录下输入chmod +x activemq4.设置activemq开机启动chkconfig --add activemqchkconfig --list (查看activemq服务)5. 执行命令开启activemq/关闭activemq/查看activemq状态开启activemq: service activemq start关闭activemq:service activemq stop查看状态: service activemq status4、测试4.1.测试执行cd apache-activemq-5.15.9/bin   (进入)./activemq start (开启activemq)./activemq status   (查看状态,显示isrunning即成功运行)5、参考信息     ActiveMQ安装指导: https://www.2cto.com/kf/201806/753069.htmlhttps://www.cnblogs.com/lucia557/p/7602155.html
  • [中间件] 【鲲鹏翱翔】消息中间件03-Zookeeper移植指南
    1.简介    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。本次移植以Zookeeper3.4.6为例进行说明,其他版本将下文中的3.4.6替换为对应的版本号进行验证即可。2.环境说明Packet NameVersionCentOSCentOS 7.5 with ARMZookeeper3.4.63.安装部署3.1安装Ant打包工具  通过yum安装Ant:yum install -y ant3.2安装automake和cppunit工具yum install -y autoconf   automake libtool cppunit4.依赖库编译无5.Zookeeper编译从官网上下载zookeeper-release-3.4.6源码到根目录下,并解压:wget https://github.com/apache/zookeeper/archive/release-3.4.6.tar.gztar zxvf release-3.4.6.tar.gz如果官网下载有问题,可以通过网站(https://github.com/apache/zookeeper/releases/tag/release-3.4.6)下载源码包,通过FTP工具上传到云主机之后再执行解压。进入到解压后的zookeeper目录执行编译:cd zookeeper-release-3.4.6ant package tar编译成功后,在zookeeper-release-3.4.6/build下生成zookeeper-3.4.6.tar.gz包。tar包可在相同环境下使用,不需要再次编译。6.测试验证测试单机部署Zookeeper。Step1:将上一步打包好的安装包复制到root目录下,并解压cp /root/zookeeper-release-3.4.6/build/zookeeper-3.4.6.tar.gz /roottar -zxvf zookeeper-3.4.6.tar.gzStep2:进入到Zookeeper目录下解压并创建data和logs目录cd /root/zookeeper-3.4.6mkdir datamkdir logsStep3:在zookeeper的conf目录下生成和修改zoo.cfg配置文件cd confcp zoo_sample.cfg zoo.cfgvim zoo.cfg#文件内容如下,标红的代表做过修改,其他的默认# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=../datadataLogDir=../logs# the port at which the clients will connectclientPort=2181Step4:修改环境变量增加zookeeper配置vim /root/.bash_profile#在文件最后增加zookeeper配置,其他保持不变# zookeeper envexport ZOOKEEPER_HOME=/root/zookeeper-3.4.6export PATH=$ZOOKEEPER_HOME/bin:$PATH Step5:启动和验证Zookeeper服务source /root/.bash_profilecd /root/zookeeper-3.4.6/bin#启动zookeeper服务./zkServer.sh start #验证zookeeper状态./zkServer.sh status#通过curl命令验证2181端口是否通curl 127.0.0.1:2181出现如上截图代表安装成功。 7.参考信息官方链接:https://zookeeper.apache.org/。安装zookeeper 3.4.6指导链接: https://www.cnblogs.com/zfzf1/p/6644122.html 8.FAQ无。
  • [C/C++] 【编程技巧】Mysql5.7运行在鲲鹏芯片上的一个死锁问题分析详解
    问题ticket:https://bugs.mysql.com/bug.php?id=94699华为图灵团队在对mysql做超大规模测试时发现,mysql5.7存在一个较大概率的死锁问题。经过调试和定位,发现这是一个由于和X86架构不同导致的一个常见编程写法的问题。出问题的代码如下:    if (!pass        && lock->recursive        && os_thread_eq(lock->writer_thread, thread_id)) {程序员的定式思维,通过&&连接的条件会从左到右依次执行,所以上述的语句是对锁的两次访问操作也是顺序执行的。然而鲲鹏、ARMv8等架构和X86_64架构在程序运行时的内存访问顺序设计理念不同。ARM64是弱一致性的,而X86_64是松一致性的。从下表可以看出X86_64对内存的读是不乱序的。Type鲲鹏/ARMx86AMD64Loads reordered after loadsYLoads reordered after storesYStores reordered after storesYStores reordered after loadsYYYAtomic reordered with loadsYAtomic reordered with storesYDependent loads reorderedIncoherent instruction cache   pipelineYY所以在arm上运行上面那行代码,哪一个条件先被访问到实际上不可控制。社区已经接纳的改动如下       bool recursive;       os_thread_id_t writer_thread;       if (!pass) {          recursive = lock->recursive;          os_rmb;          writer_thread = lock->writer_thread;       }        if (!pass && recursive && os_thread_eq(writer_thread, thread_id)) {通过一个程序段落显示控制内存访问的先后。
  • [中间件] 【鲲鹏翱翔】消息中间件04-ELK6.2.3环境搭建指南
    1.   简介ELK是集中日志解决方案的一种,具有收集、传输、存储、分析日志的功能。ELK分别是Elasticsearch、Logstash和Kibana三个开源软件的首字母缩写。Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。Logstash 的作用就是一个数据收集器,将各种格式各种渠道的数据通过它收集解析之后格式化输出到 Elasticsearch。Kibana 是一款基于 Apache 开源协议,使用 JavaScript 语言编写,为 Elasticsearch 提供分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度的表图。类别:中间件2.   部署环境Packet NameVersion备注EulerEuler 2.8与Centos二选一CentOSCentOS 7.5 with ARM与Euler二选一Elasticsearch6.2.3Logstash6.2.3Kibana6.2.3整个环境在一台服务器部署    3.   安装部署    3.1 约束说明 & 配置华为官方镜像源Kibana 的版本需要和 Elasticsearch 的版本一致,这是官网的配置要求,可参考网址:https://www.elastic.co/guide/cn/kibana/current/setup.html 配置华为官方镜像源Centos7.5 mkdir -p /etc/yum.repos.d/repo_bak/ mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_bak/ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/Centos-altarch-7.repo yum makecacheEuler2.8 wget http://mirrors.myhuaweicloud.com/repo/mirrors_source.sh && sh mirrors_source.sh     3.2  JDK安装Centos7.5 yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-develEuler2.8#Euler2.8 没有找到java-1.8.0-openjdk-devel, yum search openjdk yum -y install java-1.8.0-openjdk源码安装java(option)#下载tar包wget http://openjdk.linaro.org/releases/jdk8u-server-release-1803.tar.xz#解压tar -jxvf jdk8u-server-release-1803.tar.xz -C /usr/lib/jvm#创建软连接ln -sf /usr/lib/jvm/jdk8u-server-release-1803/bin/java /etc/alternative/java #配置环境变量vi /etc/profile.d/java.sh-------------------java.sh---------------#JAVA_HOMEexport JAVA_HOME=/usr/lib/jvm/jdk8u-server-release-1803export JRE_HOME=$JAVA_HOME/jreexport JAVA=$JAVA_HOME/binexport CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jarexport PATH=$PATH:${JAVA_HOME}/bin--------------------------------------------source /etc/profile.d/java.sh#查看java版本java -version      3.3 安装部署Elasticsearch6.2.3 wget  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz tar xvf elasticsearch-6.2.3.tar.gz -C /opt && cd /opt# 添加用户,elasticsearch不允许使用root执行 groupadd elastic && useradd elastic -g elastic -p elastic chown -R elastic:elastic elasticsearch-6.2.3 su elastic cd elasticsearch-6.2.3# 后台启动elasticsearch ./bin/elasticsearch & # 验证 curl 127.0.0.1:9200{ "name" : "Surge", "cluster_name" : "elasticsearch", "version" : { "number" : "2.1.0", "build_hash" : "72cd1f1a3eee09505e036106146dc1949dc5dc87", "build_timestamp" : "2015-11-18T22:40:03Z", "build_snapshot" : false, "lucene_version" : "5.3.1" }, "tagline" : "You Know, for Search"}备注:如果遇到如下错误ERROR: [2] bootstrap checks failed[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]# 切换至root用户,进行操作# 临时生效# elasticsearch需要在内存中保存索引,max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量. 防止elasticsearch抛出内存不足的异常。 sudo sysctl vm.max_map_count=262144 [1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]# centos7.5 执行如下命令,退出ssh或者重启生效 vi /etc/security/limits.conf# 在文件末尾添加* soft nofile 65536      #限制(软)进程数量* hard nofile 131072     #限制(硬)进程数量# Euler2.8执行如下命令,退出ssh或者重启生效# 限制资源使用的配置文件是 /etc/security/limits.conf,和/etc/security/limits.d/目录,/etc/security/limits.d/里面配置会覆盖/etc/security/limits.conf的配置 vi /etc/security/limits.d/huawei-nofile.conf# 在文件末尾添加* soft nofile 65536* hard nofile 65536部署Kibana6.2.3 wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.3-linux-x86_64.tar.gz tar xvf kibana-6.2.3-linux-x86_64.tar.gz -C /opt rm -rf /opt/kibana-6.2.3-linux-x86_64/node# 直接下载的Kibana是x86的,需要将node组件换成arm版的运行 wget https://nodejs.org/dist/v8.11.3/node-v8.11.3-linux-arm64.tar.xz tar xvf /opt/node-v8.11.3-linux-arm64.tar.xz -C /opt/kibana-6.2.3-linux-x86_64 cd /opt/kibana-6.2.3-linux-x86_64 && mv node-v8.11.3-linux-arm64 node# 修改配置文件 vi config/kibana.yml# 配置成任意IP可以访问,生产环境建议为特定IPserver.host: "0.0.0.0"# 后台启动kibana ./bin/kibana &访问http://IP:5601部署Logstash6.2.3 wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.3.tar.gz tar xvf logstash-6.2.3.tar.gz && cd logstash-6.2.3# 解压完成,早config目录下新建一个logstash.conf# 然后做好input ,filter,output三大块, 其中input是吸取logs文件下的所有log后缀的日志文件,filter是一个过滤函数,这里不用配置,output配置了导入到# hosts为127.0.0.1:9200的elasticsearch中,每天一个索引。 vi  config/logstash.confinput {     file {        type => "log"        path => "/logs/*.log"        start_position => "beginning"    }} output {  stdout {   codec => rubydebug { }  }   elasticsearch {    hosts => "127.0.0.1"    index => "log-%{+YYYY.MM.dd}"  }}# 启动logstash ./bin/logstash -f ./config/logstash.conf开启另一个ssh终端,往日志文件目录中写入数据 mkdir -p /logs cd /logs echo 'hello world' > 1.log      3.4  验证在浏览器中访问http://IP:/5601,可以打开kibana页面,                                                选择Management标签,在index-name-*框中输入log*,选择Time-field name 为@timestamp 点击Discover,就可以看见内容了 3.5 参考信息[1] 通过ELK快速搭建一个你可能需要的集中化日志平台:https://www.cnblogs.com/huangxincheng/p/7918722.html4.   FAQ4.1 点击Management标签时显示如下界面说明数据源不存在,在logs目录下增加相应日志 mkdir -p /logs cd /logs echo 'hello world' > 1.log
  • [中间件] 【鲲鹏翱翔】消息中间件05-kafka移植安装指南
    1、简介Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。本次移植以Kafka-2.1.0为例进行说明官方链接:https://kafka.apache.org/类别:应用程序2、环境类别子项版本获取地址(方法)ECS规格arm通用计算增强型|c3.xlarge.4|4vCPUs| 14GB---OSCentOS7.5--Kernel4.14--PackageKafka2.1.0https://codeload.github.com/apache/kafka/tar.gz/2.1.0OpenJdkJdk8u191-b12https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz Gradle4.10https://downloads.gradle.org/distributions/gradle-5.4-bin.zip Scala2.12.0https://downloads.lightbend.com/scala/2.12.0/scala-2.12.0.tgz  3、依赖安装         通用工具Gradle、Jdk8u191-b12、Scala-2.12.0Gradle4.10安装1、下载地址   执行:wget https://downloads.gradle.org/distributions/gradle-5.4-bin.zip2、解压   执行:yum install unzip   执行::unzip -d   /home/tools/gradle/gradle-5.4-bin.zip3、设置环境变量   执行:vim /etc/profile   在配置文件最后加上:export GRADLE_HOME=/home/tools/gradle/gradle-5.4export PATH=$ GRADLE _HOME/bin:$PATH   保存后执行: source /etc/profilejdk8u191-b12安装1、下载地址:执行:wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz2、解压   执行:cd /home/tools   执行:tar -zxvf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz3、设置环境变量   执行:vim /etc/profileexport JAVA_HOME=/home/tools/jdk8u191-b12export PATH=${JAVA_HOME}/bin:$PATHexport CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar   执行: source /etc/profile Scala-2.12.0安装1、下载地址:wget https://downloads.lightbend.com/scala/2.12.0/scala-2.12.0.tgz2、解压   执行:cd /home/tools   执行:tar -zxvf scala-2.12.0.tgz3、设置环境变量   执行:vim /etc/profileexport SCALA_HOME=/home/tools/scala-2.12.0export PATH=${SCALA_HOME}/bin:$PATH   执行: source /etc/profile 4、组件编译安装4.1 下载源码    从Kafka官网下载kafka-2.1.0的源码,    执行:wget -O kafka-2.1.0.tar.gz   https://codeload.github.com/apache/kafka/tar.gz/2.1.04.2 解压    执行:tar -zxvf  kafka-2.1.0.tar.gz  进行解压    执行:cd kafka-2.1.0  进入源码目录4.3 执行编译命令执行:mkdir  /usr/gradleRepository  (gradleRepository为gradle本地仓库目录需要手动创建)执行:gradle -g   /usr/gradleRepository clean(注意:此时目录为kafka-2.1.0)    执行:gradle -g /usr /gradleRepository releaseTarGz     (按实际情况选择编译命令)4.4 安装部署1、配置   执行:cd kafka-2.1.0   执行:vim config/server.properties           #配置zookeeper和主机名           host.name=localhost               zookeeper.connect= localhost:21812、配置环境变量   执行:vim /etc/profileexport KAFKA_HOME=/xxxx/kafka-2.1.0export PATH=${KAFKA_HOME}/bin:$PATH   执行: source /etc/profile3、启动Kafka   执行:zookeeper-server-start.sh   config/zookeeper.properties &   执行:kafka-server-start.sh config/server.properties &4、检查进程启动情况:   执行:jps   如果kafka进程:Kafka、QuorumPeerMain两个进程启动成功,整个Kafka服务启动完成。 5、测试Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。1、shell_1创建topic:   执行:   kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor   1 --partitions 1 --topic test2、shell_2生产数据:   执行:   kafka-console-producer.sh --broker-list localhost:9092   --topic test3、shenll_3消费数据   执行:   kafka-console-consumer.sh --bootstrap-server localhost:9092   --topic test --from-beginning   在shell_2中的producer生产端可以输入文本,在shell_3中的consumer消费端可以查看到刚刚producer端生产的文本。如果需要了解更多的命令,建议查看kafka官网。6、参考信息    官方链接:https://kafka.apache.org      Github链接:https://github.com/apache/kafka      Kafka配置可以参考官网指导(https://kafka.apache.org/documentation/#configuration) 7、FAQ     待补充
  • [中间件] 【鲲鹏翱翔】应用中间件01-Tomcat移植安装指南
    1、简介Apache Tomcat是用于提供Java应用程序的Web服务器和servlet容器。Tomcat是Apache Software Foundation发布的Java Servlet和JavaServer Pages技术的开源实现。本指南描述了在ARM64,CentOS7.5环境下配置Tomcat7.0.76和8.5.41的过程,可供相关人士参考。组件名版本JAVA1.8.0_212-b04Tomcat7.0.76Tomcat8.5.41操作系统CentOS 7.5 64 bit 2、yum源设置查看操作系统自带的yum源,默认的CentOS支持7.0.76版本的Tomcat。cat /etc/yum.repos.d/CentOS-Base.repo   baseurl=http://mirror.centos.org/altarch/$releasever/os/$basearch/$releasever为系统大版本,本机为7,$basearch为系统基础架构信息,本机为aarch64.       可以配置华为源,速度较快curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/Centos-altarch-7.repoyum clean allyum makecache 3、Tomcat7.0.76版本安装    使用yum安装Java,CentOS源默认安装openjdk1.8.0版本yum install java    使用yum安装tomcat,CentOS源默认安装7.0.76版本yum install tomcat    安装管理包和在线文档yum install tomcat-webapps   tomcat-admin-webappsyum install tomcat-docs-webapp   tomcat-javadoc     启动Tomcatsystemctl start tomcat     访问Tomcathttp://server_IP_address:8080可以看到如下界面4、Tomcat8.5.41版本安装获取Tomcat8.5.41版本镜像wget   http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.41/bin/apache-tomcat-8.5.41.tar.gz    解压压缩包tar -zxvf apache-tomcat-8.5.41.tar.gz   切换到bin目录下,启动tomcat服务cd apache-tomcat-8.5.41/bin./catalina.sh start    访问Tomcathttp://server_IP_address:8080可以看到如下界面5、FAQ待补充 
  • [中间件] 【鲲鹏翱翔】应用中间件03-HAProxy移植安装指南
    1.   简介HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。HAProxy可以支持在arm环境下运行,进行需重新编译。可以从官网下载最新的HAProxy包进行解压缩、配置、运行。2.   部署环境Packet NameVersionDetailCentOSCentOS 7.5 with ARMarm通用计算增强型 | rc3.xlarge.4 | 4vCPUs | 14GBHAProxy1.8.20none     3.   安装部署HAProxy代码在http://www.haproxy.org/安装常用的系统组件,安装相应的库:yum   install unzip gcc gcc-c++ python-devel libcurl-devel openssl  openssl-devel python-setuptools.noarch libxml2-devel   libxml2  glibc-static libstdc++-static   lzip libffi-devel编译安装HAProxy从http://www.haproxy.org/获取软件安装包: [root@ecs-arm-0005 ~]# wget   http://www.haproxy.org/download/1.8/src/haproxy-1.8.20.tar.gz       解压haproxy-1.8.20.tar.gz[root@   ecs-arm-0005 ~]# tar zxvf haproxy-1.8.20.tar.gz进入解压路径,进行编译:[root@ ecs-arm-0005 haproxy-1.8.20]# make TARGET=linux2628   PREFIX=/usr/local/haproxy #参数说明TARGET=linux2628 #内核版本,使用uname -r查看内核,如:3.10.0-514.el7,此时该参数就为linux310;kernel 大于2.6.28的可以用:TARGET=linux2628PREFIX=/usr/local/haproxy  #/usr/local/haproxy为haproxy安装路径安装HAProxy:[root@ecs-arm-0005   haproxy-1.8.20]# make install PREFIX=/usr/local/haproxy     4.示例测试     编辑配置文件.cfg创建配置文件目录,HAProxy默认不创建配置文件,需要复制软件包的模板配置文件,并进行编辑[root@ ecs-arm-0005 haproxy-1.8.20]# mkdir /usr/local/haproxy/conf[root@ ecs-arm-0005 haproxy-1.8.20]# cp ./examples/option-http_proxy.cfg   /usr/local/haproxy/conf/haproxy.cfg[root@ ecs-arm-0005 haproxy-1.8.20]# cd /usr/local/haproxy/conf[root@ ecs-arm-0005 conf] vi haproxy.cfg编辑haproxy文件,并保存globalmaxconn  20000ulimit-n  16384log  127.0.0.1 local0uid  200gid  200chroot  /var/emptynbproc  4daemon   defaultslog     globalmode    httpoption  httplogoption  dontlognullretries   3timeout   connect 5000timeout   client  50000timeout   server 50000  listen admin_statsbind   0.0.0.0:1080mode   httpoption   httplogmaxconn   10stats   refresh 30sstats   uri /statsstats   realm XingCloud\ Haproxystats   auth admin:adminstats   auth  Frank:Frankstats   hide-versionstats   admin if TRUE创建HAProxy用户[root@ ecs-arm-0005   haproxy-1.8.20] /usr/local/haproxy/sbin/haproxy -f   /usr/local/haproxy/conf/haproxy.cfg[root@   ecs-arm-0005 haproxy-1.8.20] lsof -i:1080访问HAProxy在浏览器中访问 http://ip_adress:1080/stats,可以看到statistics界面。                                                                                                                     
  • [中间件] 【鲲鹏翱翔】应用中间件04-consul移植安装指南
    1.   简介Consul是一个开源工具,用于实现分布式系统的服务发现与配置,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案等。安装包仅包含一个可执行文件,方便部署。本指导描述了在ARM64架构,CentOS7.5系统下使用Consul1.5.1的过程,可供相关人士参考。2.   部署环境Packet NameVersionCentosCentos   7.5 with ARMConsul1.5.13.   安装部署consul安装包仅包含一个可执行文件,方便部署使用。3.1         下载consul安装包wget   https://releases.hashicorp.com/consul/1.5.1/consul_1.5.1_linux_arm64.zipunzip   consul_1.5.1_linux_arm64.zip解压后,可以看到consul可执行文件。3.2         配置将consul文件复制到相应目录cp   consul /usr/local/bin/4.   测试打开一个新窗口,执行consul,可以看到如下输出:#consulusage:   consul [--version] [--help] <command> [<args>]Available   commands are:    agent          Runs a Consul agent    configtest     Validate config file    event          Fire a new event    exec           Executes a command on Consul nodes    force-leave    Forces a member of the cluster to enter   the "left" state    info           Provides debugging information for   operators    join           Tell Consul agent to join cluster    keygen         Generates a new encryption key    keyring        Manages gossip layer encryption keys    kv             Interact with the key-value   store    leave          Gracefully leaves the Consul   cluster and shuts down    lock           Execute a command holding a lock    maint          Controls node or service   maintenance mode    members        Lists the members of a Consul cluster    monitor          Stream logs from a Consul   agent    operator       Provides cluster-level tools for   Consul operators    reload         Triggers the agent to reload   configuration files    rtt            Estimates network round trip time   between nodes    snapshot       Saves, restores and inspects snapshots of   Consul server state    version        Prints the Consul version    watch          Watch for changes in Consul查看版本#consul   –versionConsul v1.5.1Protocol 2 spoken by default,   understands 2 to 3 (agent will automatically use protocol >2 when speaking   to compatible agents)说明consul可以正常使用。 5.   参考信息[1] https://blog.csdn.net/liuzhuchen/article/details/81913562[2] https://blog.csdn.net/xiang__liu/article/details/808785376.   FAQ暂无。
  • [中间件] 【鲲鹏翱翔】应用中间件05-solr移植安装指南
    1、简介Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。Solr可以支持在arm环境下运行,无需重新编译。但需要配合Tomcat 8以上版本使用。可以从官网下载最新的Solr包进行解压缩、配置、运行。2、环境类别版本配置备注ARM测试服务器CentOS7.4arm通用计算增强型 | rc3.xlarge.4 | 4vCPUs | 14GB华为云公测可申请ARM服务器3、Tomcat安装(详细见tomcat指导安装文档)4、Solr安装(arm服务器)4.1.下载安装包wget http://mirror.bit.edu.cn/apache/lucene/solr/8.1.1/solr-8.1.1.zip4.2.解压缩包unzip solr-8.1.1.zip4.3.复制文件夹到目录1.拷贝solr-8.1.1/server/solr-webapp/webapp目录到tomcat/webapp/,改名叫solrcp -r solr-8.1.1/server/solr-webapp/webapp tomcat8/webapps/solr2.拷贝solr-8.1.1/server/lib/ext下的jar包到tomcat下的webapps/solr/WEB-INF/lib路径下cp solr-8.1.1/server/lib/ext/*.jar tomcat8/webapps/solr/WEB-INF/lib/3. 拷贝solr-8.1.1/dist 下的solr-dataimporthandler-8.1.1.jar、solr-dataimporthandler-extras-8.1.1.jar 包到tomcat下的webapps/solr/WEB-INF/lib路径cp solr-8.1.1/dist/solr-dataimporthandler*.jar   tomcat8/webapps/solr/WEB-INF/lib4.拷贝solr-8.1.1/server/lib下的metrics开头的5个jar到tomcat下的webapps/solr/WEB-INF/lib路径下(metrics-core-3.2.2.jar、metrics-ganglia-3.2.2.jar、metrics-graphite-3.2.2.jar、metrics-jetty9-3.2.2.jar、metrics-jvm-3.2.2.jar)5.新建一个文件夹solr-home,并将solr-8.1.1/server/路径下solr文件夹中的内容拷贝过来mkdir solr-homecp -r solr-8.1.1/server/solr/* solr-home  (复制到刚刚新建的solr-home里)4.4.环境配置1.进入tomcat8下的webapps/solr/WEB-INF下修改web.xmlcd tomcat8/webapps/solr/WEB-INFvi web.xml2. //记得打开此处的注释(如果没有手动输入)<env-entry>    <env-entry-name>solr/home</env-entry-name>  <env-entry-value>/usr/local/solr/solr-home</env-entry-value>//自己solr-home的位置    <env-entry-type>java.lang.String</env-entry-type></env-entry> //中间省略...//下面这段注释掉<!--  <security-constraint>    <web-resource-collection>        <web-resource-name>Disable TRACE</web-resource-name>        <url-pattern>/</url-pattern>        <http-method>TRACE</http-method>      </web-resource-collection>    <auth-constraint/>  </security-constraint>  <security-constraint>      <web-resource-collection>        <web-resource-name>Enable everything but   TRACE</web-resource-name>        <url-pattern>/</url-pattern>        <http-method-omission>TRACE</http-method-omission>      </web-resource-collection>  </security-constraint>  -->5、测试5.1.测试执行1.运行tomcat2.访问http://ip:port/solr/index.html(ip端口根据tomcat配置来填) 6、参考信息     solr安装指导: https://blog.csdn.net/qq_40524941/article/details/815122937、FAQ     待补充
  • [交流分享] 【鲲鹏翱翔】数据库01-PostgreSQL移植安装指南
    1、简介PostgreSQL是一个功能强大的开源企业级数据库系统,可以运行在所有主流操作系统上,包括Linux、Unix(AIX、BSD、HP-UX、SGI IRIX、Mac OS X、Solaris和Tru64)和Windows。PostgreSQL是完全的事务安全性数据库,完整地支持外键、联合、视图、触发器和存储过程(并支持多种语言开发存储过程),同时对SQL标准高度兼容,它实现的功能完全遵守于ANSI-SQL:2008标准。PostgreSQL具有多版本并发控制(MVCC)、按时间点恢复(PITR)、表空间、异步复制、嵌套事务、在线热备、复杂查询的规划和优化以及为容错而进行的预写日志等高级功能;支持国际字符集、多字节编码并支持使用当地语言进行排序、大小写处理和格式化等操作;也在所能管理的大数据量和所允许的大用户量并发访问时具有完全的高伸缩性。官方归档目录链接:https://www.postgresql.org/ftp/source/类别:数据库检验版本:PostgreSQL 9.5.5/9.1.102、环境类别子项版本获取地址(方法) 硬件CPUHi1616--网络Ethernet-10GE--存储NVMe SATA   40G --内存7G 2.4GHz--OSCentOS7.5Kernel4.14 软件GCC4.8.5readline6.2zlib1.2.73、组件安装PostgreSQL数据库安装需要的组件均可以直接yum安装。yum -y   install readline-devel zlib-devel gcc gcc-c++ zlib readline4、PostgreSQL安装设置安装路径,获取postgresql-9.5.5安装包cd   /optwget https://ftp.postgresql.org/pub/source/v9.5.5/postgresql-9.5.5.tar.gz解压压缩文件tar -zxvf   postgresql-9.5.5.tar.gz进入解压目录文件夹,配置编译安装环境cd   /opt/ postgresql-9.5.5./configure   --build=arm-linux --host=arm-linux --prefix=/usr/local/pgsql     注:--build指明编译环境,--host指明运行环境,--prefix指明安装路径.  环境配置完成后,开始编译安装makemake   install  创建用户,默认root用户不能启动postgresqladduser   postgres    将安装目录下的数据授权给postgres用户chown  -R postgres:postgres /usr/local/pgsql   设置用户环境变量su   postgresvi ~/.bash_profile   添加以下内容export   PGHOME=/usr/local/pgsqlexport   PGDATA=/usr/local/pgsql/dataexport   PATH=$PATH:$PGHOME/bin   使配置生效source   ~/.bash_profile   检验环境变量是否设置正确psql -V     如能正确显示数据库的版本信息,则配置正确5、初始化数据库       设置环境变量完成后,直接执行initdb即可完成初始化   Initdb初始化时需要指定数据目录,如未指定,会自动在环境变量中寻找PGDATA,此示例中上述步骤已设置PGDATA。initdb     看到如下信息后即代表初始化成功。 6、启动和连接设置日志文件路径mkdir   /usr/local/pgsql/log启动数据库pg_ctl   -D /usr/local/pgsql/data -l /usr/local/pgsql/log/pg_server.log start执行完成后会显示服务器启动。查看进程ps -ef   |grep postgres完成后,命令行输入psql即可进入数据库。7、参考信息配置安装指导:https://blog.csdn.net/wlwlwlwl015/article/details/532563588、FAQ1. 在make阶段出现spinlocks错误,怎么解决?A:首先执行make clean,清除已生成的编译文件。重新配置configure文件,在host后加上 –-disable-spinlocks,重新编译安装即可2.在initdb的时候,可能会报以下错误 解决方法:删除/var/lib/pgsql/data目录,再initdb
  • [开发者] 鲲鹏ECS兼容软件列表---持续更新中(07-15)
    1. 附件是基于鲲鹏ECS云主机的软件兼容性列表,包含软件版本、OS信息等,该列表将持续更新。  (1) 理论上,一个代码工程如果完全由JAVA或者python等解释性语言编写的源码构成,那么代码本身不关心自己所运行的芯片平台。  (2) 源代码由C/C++等编译语言书写的,原则上需要在鲲鹏云主机上重新编译执行。   
  • [交流分享] 基于鲲鹏芯片,华为云三款ARM-based云服务首发
    2019-01-07日,华为宣布推出业界最高性能ARM-based处理器-鲲鹏920(Kunpeng 920),以及基于鲲鹏920的TaiShan服务器。TaiShan服务器目前已经率先应用在华为云上,以服务的形式提供弹性云服务器、裸金属服务器和云手机三类云服务,满足各行业客户诉求。ARM弹性云服务器-灵活、弹性,性能领先3倍华为云将推出基于TaiShan的ARM弹性云服务器,相较于业界同类规格云服务器性能领先3倍。生态层面已逐步完善,目前已兼容10+主流操作系统,30+企业核心业务应用。同时与云上其他资源无缝对接,充分享受云上资源的便利,按需使用,弹性伸缩,为用户提供极高的性价比,满足政企应用、基因测序、大数据、电商、游戏等行业场景需求。ARM裸金属服务-超高性价比,分钟级快速发放华为云ARM裸金属服务,相比上一代实例,核数增加50%,单核性能同样领先业界同类产品3倍以上,并且支持分钟级快速发放,为大数据、手机仿真等场景提供可快速部署、按需购买的高性价比ARM裸金属实例。基于华为云SDI架构,实现ARM裸金属服务器的存储灵活配置。此外可集成多张高性价比的专业级GPU显卡,满足对ARM服务器上手机仿真密度有高要求的场景。ARM云手机服务- Android应用无缝上云,公有云业界独家云手机作为一种创新类型的应用,通过在ARM服务器上运用虚拟化仿真技术,为客户提供基于云的仿真手机服务。首先,云手机无限拓展手机及终端的计算与存储性能;其次,给差异化越来越大的不同手机及终端带来一致性的用户体验;最后,通过将数据留在云端,带给企业更加安全的移动办公解决方案。华为云业界独家提供基于ARM的云手机解决方案,无缝兼容Android原生APP,兼容性更好,性能相比模拟器提高50%以上,满足APP仿真测试、云游戏和移动云办公等场景。同时,首创端云渲染分离指令流技术,并集成高性价比GPU显卡,带给用户更加流畅的云手机体验效果。华为云用在线的方式将华为30多年在ICT基础设施领域的技术积累和产品开放给客户。在芯片和硬件领域深厚的技术积累,使得华为云拥有坚实的技术底座,也让芯片、硬件等技术创新,能够在云上快速地提供服务化的产品,降低使用门槛。让客户能够更加便捷地在线获取服务,享受科技创新带来的红利。华为董事、战略Marketing总裁徐文伟表示:    麒麟980助力华为手机推向智慧新高度,基于昇腾310的产品和服务(如华为云)使能行业普惠AI;今天,我们以鲲鹏920,把计算带入多核异构的多样性时代。华为在计算领域厚积薄发、持续的创新突破 ,与客户及伙伴一起共同努力,构建万物互联的智能世界!
总条数:1366 到第
上滑加载中