首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10000篇文章
优秀的个人博客,低调大师

Etcd集群搭建过程和命令总结

什么是etcd?etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值数据库,基于Go语言实现。主要解决分布式系统中各种服务的配置信息的管理分享,服务的发现。 一、Etcd三节点集群配置:10.100.50.12310.100.50.12410.100.50.125https://github.com/coreos/etcd/releases/下载1、解压缩、运行etcd[root@Etcd01 /]# tar -zvxf etcd-v3.2.4-linux-amd64.tar.gz [root@Etcd01 /]# mv etcd-v3.2.4-linux-amd64 etcd[root@Etcd01 /]# cd etcd[root@Etcd01 etcd]# lsDocumentation etcd etcdctl README-etcdctl.md README.md READMEv2-etcdctl.md[root@Etcd01 etcd]# ./etcd 2、添加环境变量在"/etc/profile" 中添加环境变量 Etcd export PATH="$PATH:/etcd"export ETCDCTL_API=33、添加systemctl的服务[root@Etcd01 etcd]# vi /etc/systemd/system/etcd.service[Unit]Description=etcd[Service]ExecStart=/etcd/etcd [Install]WantedBy=multi-user.target4、关闭防火墙[root@Etcd01 etcd]# systemctl stop firewalld[root@Etcd01 etcd]# systemctl disable firewalld关闭SElinux[root@Etcd01 etcd]#sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config以上三步在其他两个节点重复操作。 5、运行脚本 etcd --name infra0 --initial-advertise-peer-urls http://10.100.50.123:2380 \ --listen-peer-urls http://0.0.0.0:2380 \ --listen-client-urls http://0.0.0.0:2379 \ --advertise-client-urls http://10.100.50.123:2379 \ --initial-cluster-token etcd-cluster-1 \ --initial-cluster infra0=http://10.100.50.123:2380,infra1=http://10.100.50.124:2380,infra2=http://10.100.50.125:2380 \ --initial-cluster-state new etcd --name infra1 --initial-advertise-peer-urls http://10.100.50.124:2380 \ --listen-peer-urls http://0.0.0.0:2380 \ --listen-client-urls http://0.0.0.0:2379 \ --advertise-client-urls http://10.100.50.124:2379 \ --initial-cluster-token etcd-cluster-1 \ --initial-cluster infra0=http://10.100.50.123:2380,infra1=http://10.100.50.124:2380,infra2=http://10.100.50.125:2380 \ --initial-cluster-state new etcd --name infra2 --initial-advertise-peer-urls http://10.100.50.125:2380 \ --listen-peer-urls http://0.0.0.0:2380 \ --listen-client-urls http://0.0.0.0:2379 \ --advertise-client-urls http://10.100.50.125:2379 \ --initial-cluster-token etcd-cluster-1 \ --initial-cluster infra0=http://10.100.50.123:2380,infra1=http://10.100.50.124:2380,infra2=http://10.100.50.125:2380 \ --initial-cluster-state new 后台运行: nohup /path/to/start_etcd.sh &6、命令参数解释https://coreos.com/etcd/docs/latest/op-guide/configuration.html官网解释etcd --name infra0节点名称--initial-advertise-peer-urls http://HOST-IP:2380 通知其他Etcd实例地址--listen-peer-urls http://0.0.0.0:2380 监听其他Etcd实例地址--listen-client-urls http://0.0.0.0:2379 监听客户端地址--advertise-client-urls http://HOST-IP:2379 通知客户端地址--initial-cluster-token etcd-cluster-1 初始化集群Token,同一个集群Token必须相同。--initial-cluster infra0=http://HOST-IP:2380,infra1=http://HOST-IP:2380,infra2=http://HOST-IP:2380 初始化集群节点地址--initial-cluster-state new新建集群,如果是已经存在的集群将new更改为existing 二、使用etcdctl命令操作数据库set指定某个键的值 格式:set -- OPTIONS: --ttl value key time-to-live in seconds (default: 0) --swap-with-value value previous value --swap-with-index value previous index (default: 0) 例1:设置键值[root@Etcd01 ~]# etcdctl set key1 value1value1[root@Etcd01 ~]# etcdctl get key1value1[root@Etcd01 ~]# 例2:设置键值的超时时间[root@Etcd01 ~]# etcdctl set --ttl 10 key2 value2value2[root@Etcd01 ~]# etcdctl get key2Error: 100: Key not found (/key2) [10][root@Etcd01 ~]# 例3:若该键现在的值是 value,则进行设置操作[root@Etcd01 ~]# etcdctl set key1 value1value1[root@Etcd01 ~]# etcdctl get key1value1[root@Etcd01 ~]# etcdctl set key1 "value2" --swap-with-value "value1" 如果value=value1则 ,把key1的键值改为value2。value2[root@Etcd01 ~]# get获取键值格式: get 选项:--sort 对结果进行排序--consistent 将请求发给主节点,保证获取内容的一致性例1:获取键值[root@Etcd01 ~]# etcdctl set key1 value1value1[root@Etcd01 ~]# etcdctl get key1value1 update更新键值格式:etcdctl update 选项:--ttl ‘0’ 超时时间默认为0,永不超时。 [root@Etcd01 ~]# etcdctl set key1 value1value1[root@Etcd01 ~]# etcdctl update --ttl '5' key1 value2 更新key1的键值为value2,并设置5秒超时时间。value2[root@Etcd01 ~]# etcdctl get key1value2[root@Etcd01 ~]# etcdctl get key1 超过5秒钟后键值自动删除。Error: 100: Key not found (/key1) [22][root@Etcd01 ~]# rm删除某个键值格式:etcdctl rm 选项:--dir 如果键是个空目录或者键值对则删除--recursive 删除目录和所有子键--with-value 检查现有的值是否匹配--with-index '0' 检查现有的 index 是否匹配 例1:删除键值[root@Etcd01 ~]# etcdctl set key1 valuevalue[root@Etcd01 ~]# etcdctl rm key1PrevNode.Value: value[root@Etcd01 ~]# etcdctl get key1Error: 100: Key not found (/key1) [24][root@Etcd01 ~]# mk如果给定的键不存在,则创建一个新的键值格式: etcdctl mk 选项:--ttl '0' 超时时间(单位为秒),不配置(默认为 0)则永不超时 例:当键值不存在时[root@Etcd01 ~]# etcdctl mk key2 value1value1[root@Etcd01 ~]# etcdctl get key2value1 例:当键值存在时会报错[root@Etcd01 ~]# etcdctl mk key1 value2Error: 105: Key already exists (/key1) [25] mkdir如果给定的目录不存在,则创建一个新的键目录格式:etcdctl mkdir 选项:--ttl '0' 超时时间(单位为秒),不配置(默认为 0)则永不超时 例:[root@Etcd01 ~]# etcdctl mkdir keydir 创建一个mkdir的目录[root@Etcd01 ~]# etcdctl set mkdir/key1 value1 在mkdir目录下创建一个key1的键且值为value1value1[root@Etcd01 ~]# etcdctl ls /mkdir 使用ls命令查看mkdir下的键/mkdir/key1 setdir创建一个目录,无论存在与否格式:etcdctl setdir --ttl '0' 超时时间(单位为秒),不配置(默认为 0)则永不超时 例:[root@Etcd01 ~]# etcdctl setdir keydir2[root@Etcd01 ~]# etcdctl ls/keydir1/keydir2 updatedir更新一个已经存在的目录(仅在目录中设置了TTL或生存时间时才有用)格式: etcdctl updatedir 选项:--ttl '0' 超时时间(单位为秒),不配置(默认为 0)则永不超时 例:设置TTL时间表示keydir的存活时间。[root@Docker01 ~]# etcdctl ls /keydir[root@Docker01 ~]# etcdctl updatedir keydir --ttl '10' 设置超时时间为10秒[root@Docker01 ~]# etcdctl ls /keydir[root@Docker01 ~]# etcdctl ls 十秒中后目录自动删除,如果为0则永不超时。[root@Docker01 ~]# rmdir删除一个目录,或者键值对格式:etcdctl rmdir 或 例1:删除目录[root@Docker01 ~]# etcdctl ls/keydir[root@Docker01 ~]# etcdctl rmdir /keydir[root@Docker01 ~]# etcdctl ls[root@Docker01 ~]# 例2:删除键值对[root@Docker01 ~]# etcdctl set key1 value1value1[root@Docker01 ~]# etcdctl rmdir key1 删除键值对,格式可以是etcdctl rmdir 而不用加键对应的值。PrevNode.Value: value1[root@Docker01 ~]# etcdctl get key1Error: 100: Key not found (/key1) [22][root@Docker01 ~]# etcdctl ls[root@Docker01 ~]# ls 列出目录(默认为根目录)下的键或者子目录,默认不显示子目录中的内容格式:etcdctl ls 例:[root@Docker01 ~]# etcdctl mkdir /keydir1/key1 value1[root@Docker01 ~]# etcdctl mkdir /keydir2/[root@Docker01 ~]# etcdctl ls/keydir1/keydir2[root@Docker01 ~]# 三、非数据库操作 backup备份 etcd 的数据。选项--data-dir etcd 的数据目录--backup-dir 备份到指定路径 watch检测一个键值的变化格式:etcdctl watch --forever 一直监测,直到用户按 CTRL+C 退出--after-index '0' 在指定 index 之前一直监测--recursive 返回所有的键值和子键值 exec-watch检测一个键值的变化,一旦键值发生更新,就执行给定命令格式:etcdctl exec-watch -- 选项:--after-index '0' 在指定 index 之前一直监测--recursive 返回所有的键值和子键值 member通过list、add、remove命令列出、添加、删除etcd实例到etcd集群中。[root@Docker01 ~]# etcdctl member list8e9e05c52164694d: name=default peerURLs=http://localhost:2380 clientURLs=http://localhost:2379 isLeader=true[root@Docker01 ~]# 四、命令选项: --debug 输出 cURL 命令,显示执行命令的时候发起的请求--no-sync 发出请求之前不同步集群信息--output, -o 'simple' 输出内容的格式 (simple 为原始信息,json 为进行json格式解码,易读性好一些)--peers, -C 指定集群中的同伴信息,用逗号隔开 (默认为: "127.0.0.1:4001")--cert-file HTTPS 下客户端使用的 SSL 证书文件--key-file HTTPS 下客户端使用的 SSL 密钥文件--ca-file 服务端使用 HTTPS 时,使用 CA 文件进行验证--help, -h 显示帮助命令信息--version, -v 打印版本信息 https://yeasy.gitbooks.io/docker_practice/content/etcd/intro.html资料:

优秀的个人博客,低调大师

精打细算使用MaxCompute搭建数仓

MaxCompute是一套阿里自主研发的数据仓库解决方案。产品除了功能、性能、简单等优势外,还能在费用上节省下一大笔前。墨迹天气使用MaxCompute,除了性能和稳定性也有提升外,整体存储和计算的费用比之前节省70%。这是如何做到的呢,这里有一些常用的规则。 在讨论如何做到之前,我们先看下MaxCompute是如何计费的。根据目前的文档,目前的计费方式包含数据的存储、数据的下载以及计算费用。其中计算费用又分I/O后付费和预付费两种收费模式。I/O后付费根据实际的计算来进行收费;而预付费相当于包了几个CU只有购买者可以使用,这几个CU上随便怎么计算都不会产生计算费用。所以如何减少费用,也就是转换成如何减少存储的费用、如何减少下载的费用以及如何减少计算的费用。 存储 数据存储在MaxCompute上是使用列式存储并有压缩的,底层数据存储方

优秀的个人博客,低调大师

Android Robotium搭建环境测试微信

因为要在命令行下运行一些 android的工具,所以配置一些环境变量会比较方便: 遇到问题: java-jar re-sign.jar 出现提示android路径没有配置好: 需要配置如下: 配置ANDROID_HOME为android sdk的安卓目录,例如:D:\android-sdk 在path下添加这两个: %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools; 重新开关一次命令窗口 在真机中安装APK(以 腾讯微信作为 测试的apk) 因为 robotium要求被测应用和测试代码要有一致的key,所以我们需要把下载到的apk,通过re-sign.jar来产生debug key的apk,这个重新生成的apk就会跟测试项目签名一致了 re-sign.jar可以从这里下载到: http://www.troido.de/re-sign.jar 下载完后,在命令行下 通过 java -jar re-sign.jar就会出现一个节目,然后将apk拖到这个节目,就会自动生成一个debug key的apk 产生新apk的过程中会弹出一个信息框,记得截下图,因为里面有两个信息我们等会的代码中需要用到 然后打开模拟器(模拟器器一定要打开才能安装成功),然后打开命令行 adb install mitalk_debug.apk(新生成apk的名称) 安装成功就可以再模拟器里看到该应用的图标了 注意: 一、删除之前 APK 文件的签名 1、解压apk 文件 2、删除解压出来文件夹中的 META-INF 目录:META-INF 存放签名后的CERT 和MANIFEST 文件,用于识别软件的 签名及版权。 3、删除文件夹后重新把解压出来的其它文件夹压缩为zip 文件,然后直接把文件后缀改为apk 二、为 APK 重新生成签名 1、将证书复制到与需要重新签名的apk 文件相同的目录下 2、jarsigner -keystore debug.keystore -storepass android -keypass android D:\Robotium\robotium\robotium\weixin_delet_rsa_sf.apk androiddebugkey 创建 自动化测试项目 打开Eclipse,点击File->New一个Android TestProject,然后点击下一步的时候选择This project(因为我们没有米聊应用的源码),然后选择要在哪个android版本上测试 在该项目下创建一个包,com.tencent.test,在该包下创建LoginTest类,如下 package com.mitalk.test; import android.app.Activity; import android.test.ActivityInstrumentationTestCase2; import com.jayway.android.robotium.solo.Solo; @SuppressWarnings("rawtypes") public class LoginTest extends ActivityInstrumentationTestCase2 { public Solo solo; public Activity activity; private static Class<?> launchActivityClass; // 对应re-sign.jar生成出来的信息框里的两个值 private static String mainActiviy = "com.tencent.mm.ui.LauncherUI"; private static String packageName = "com.tencent.mm"; static { try { launchActivityClass = Class.forName(mainActiviy); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } @SuppressWarnings("unchecked") public LoginTest() { super(packageName, launchActivityClass); } @Override protected void setUp() throws Exception { super.setUp(); this.activity = this.getActivity(); // this.solo = new Solo(getInstrumentation(), getActivity()); } public void testLoginWithIncorrentUsernameAndPassword() throws Exception { wait(5000); //待完成 } @Override public void tearDown() throws Exception { try { this.solo.finishOpenedActivities(); } catch (Throwable e) { e.printStackTrace(); } this.activity.finish(); super.tearDown(); } } 最新内容请见作者的GitHub页:http://qaseven.github.io/

优秀的个人博客,低调大师

windows下搭建elastcsearch+kibana+logstash

elasticsearch安装 参考链接:http://www.jianshu.com/p/058a4a26dce7 kibana安装 下载链接:https://www.elastic.co/downloads/past-releases 版本:kibana-4.3.0-windows 解压后目录结构 修改配置(conf/kibana.yml): server.port: 5601 server.host: "0.0.0.0" elasticsearch.url: "http://localhost:9200" elasticsearch.preserveHost: true kibana.index: ".kibana" 启动命令: cd到kibana文件夹下bin目录,执行命令kibana.bat 安装windows的服务启动项: 下载nssm:https://nssm.cc/release/nssm-2.24.zip cmd 运行 nssm install logstash,安装服务的Path选择到kibana.bat,依赖项可以设置logstash,elasticsearch-service-x64,依赖项为空不影响正常启动。 启动界面: logstash安装 下载链接:https://www.elastic.co/downloads/past-releases 版本:logstash-2.4.1 解压后目录结构 配置logstash cd 到logstash文件夹的下bin目录 创建配置文件 logstash.conf ,内容如下 input { tcp { port => 5544 } } output { elasticsearch { hosts => ["localhost:9200"] } } 启动命令: logstash.bat agent -f logstash.conf 安装windows服务启动项 cd到logstash文件夹下bin目录 创建一个run.bat,内容为:logstash.bat agent -f logstash.conf 下载nssm:https://nssm.cc/release/nssm-2.24.zip 解压拷贝nssm-2.24\win64目录下nssm.exe到logstash bin目录 cmd 运行 nssm install logstash 在弹出的界面设置 Path为run.bat,Details选项卡设置显示名,Dependencies选项卡设置依赖服务elasticsearch-service-x64 最后点击install service 安装成功 联合验证 telnet 127.0.0.1 5544 连接到logstash,输入任何东西,最后查看kibana看是否有数据。 参考链接 http://www.cnblogs.com/yuzukwok/p/5013345.html

优秀的个人博客,低调大师

微信视频直播方案的搭建

实现在微信中嵌入直播视频,可以分享到好友或朋友圈。 工具/原料 NTV Media Server G3软件 Adobe Flash Encoder OBS直播软件 方法/步骤 1 可以使用百度、阿里或腾讯云主机,基本配置: CPU:2核心 内存:4GB 存储:50GB 带宽:10Mbps 2 或者准备一台硬件设备用于安装流媒体服务器软件,基本配置要求: CPU:Intel 至强系列,或者Intel i3以上性能的CPU 内存:16GB 存储:500GB 网卡:千兆网卡 3 安装操作系统,推荐安装CentOS7 64位版本。 4 下载安装NTV Media Server G3试用版本,按照说明书的指导完成安装。 启动流媒体服务器,命令: service ntv_server start 5 在一台Win7、Win8或Win10机器上,安装Adobe Flash Media Encoder或者OBS推流软件。 将推流地址设置到上述准备好的云主机或者物理机上,例如: rtmp://192.168.1.200/liveshow/live1 选择合适的本地摄像头视频源,然后启动推流。 6 在NTV Media Server上查看活动的流。点击HLS按钮,显示视频播放页面。 如下图: 将播放页面的地址,发给微信好友即可。效果如下图。

优秀的个人博客,低调大师

搭建Docker私有仓库--自签名方式

为了能集中管理我们创建好的镜像,方便部署服务,我们会创建私有的Docker仓库。通读了一遍官方文档,Docker为了确保安全使用TLS,需要CA认证,认证时间长的要钱啊,免费过期时间太短,还是用自签名比较简单。 准备环境 环境:两台Centos 7 虚拟机 》服务器IP:10.57.220.244 ,作为Docker仓库使用 》客户端IP:10.57.220.220 ,作为客户端来上传或拉取镜像 》域名:lpxxn.com 两台机器上均已安装好Docker 版本为 17.03.0-ce 如果你和我一样没有用真域名,只需要在客户机上修改一下hosts文件 生成自签名证书 在服务器主机上生成自签名证书,创建一个文件夹用于存放证书 mkdir -p certs 生成证书 openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/lpxxn.com.key -x509 -days 365 -out certs/lpxxn.com.crt 需要注意的是在填写的时候Common Name和你的域名是一至的。 ll certs文件夹就可以看到生成好的两个文件 运行仓库镜像,如果本地没有相应的镜像会从Docker服务器上下载,然后才启动,可以用docker ps命令查看是否已经有窗口在运行。 docker run -d -p 5000:5000 --restart=always --name registry_https -v `pwd`/certs:/home/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/home/certs/lpxxn.com.crt -e REGISTRY_HTTP_TLS_KEY=/home/certs/lpxxn.com.key registry:2 你也可以指定本机的目录保存上传好的docker镜像 docker run -d -p 5000:5000 -v `pwd`/dockerregister:/var/lib/registry --restart=always --name registry_https -v `pwd`/certs:/home/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/home/certs/lpxxn.com.crt -e REGISTRY_HTTP_TLS_KEY=/home/certs/lpxxn.com.key registry:2 到这里服务器就启动好了,最后一步是把生成好的lpxxn.com.crt复制到客户端,你可以用自己的方式复制, 我用的scp先复制到/home/test目录下,再复制到/etc/pki/ca-trust/source/anchors目录下 scp -r lpxxn.com.crt li@10.57.220.220:/home/test 配置客户端 把服务器端生成的的lpxxn.com.crt复制到客户端服务器的 /etc/pki/ca-trust/source/anchors目录下,ll查看 一下 更新证书,然后重新启动docker 。 update-ca-trust service docker stop && service docker start ok.使用curl查看一下仓库 curl https://lpxxn.com:5000/v2/_catalog 可以正常访问了。再使用docker命令上传下载试试 使用docker tag 标记本地的镜像centos:6为lpxxn.com:5000/centos6:1.0 push到仓库 执行push 命令 docker push lpxxn.com:5000/centos6:1.0 查看仓库信息 使用curl 查看仓库有哪些镜像和版本 curl https://lpxxn.com:5000/v2/_catalog curl https://lpxxn.com:5000/v2/centos6/tags/list 从仓库拉取镜像 先把本地的镜像删除 docker rmi lpxxn.com:5000/centos6:1.0 docker rmi centos:6 拉取然后run docker pull lpxxn.com:5000/centos6:1.0

优秀的个人博客,低调大师

搭建腾讯云,用xshell建立连接

学生的话可以在腾讯云上认证学生,学生用的腾讯云服务器。 我通过免费试用获得腾讯云5天使用期 申请成功会通过邮件把云服务器的必要信息发给你 进入腾讯云,登录到腾讯云主机 通过邮件所给的账户和密码登录,最好先重置下它给的密码 这样就登录成功了 在输入密码的时候它不会显示 你输入完了直接回车就好 下面用xshell5连接到云服务器 云服务器的IP地址你可以通过ifconfig查询到(也就是邮件中你内网的地址) 打开xshell5,新建一个会话 名称是你连云服务器的名称(可以随便写吧) 主机就是你云服务器的外网IP地址,端口记得默认22 然后点击用户身份验证 用户名和密码写你登录云服务器的帐号密码吧 然后在会话中点击连接 连接成功后: 到此xshell与腾讯云服务器的连接到此结束 之前我犯的错误是一直连内网的IP 怪不得一直连不上

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册