首页 文章 精选 留言 我的

精选列表

搜索[自动装配],共10015篇文章
优秀的个人博客,低调大师

Spark 安装配置简单测试

简介 Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。 Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。 Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。 来源:百度百科 Hadoop 和 Spark 的异同 https://www.oschina.net/news/73939/hadoop-spark-%20difference Hadoop安装 http://blog.csdn.net/fenglailea/article/details/53318459 系统环境 Centos 7 服务器 当前用户 hadoop Scala下载安装和配置 http://www.scala-lang.org/download/ wget http://downloads.lightbend.com/scala/2.12.0/scala-2.12.0.tgz tar zxvf scala-2.12.0.tgz mv scala-2.12.0 ~/scala Scala环境变量设置 vim ~/.bashrc 增加 export SCALA_HOME=/home/hadoop/scala/bin export PATH=$PATH:$SCALA_HOME Spark下载 http://spark.apache.org/downloads.html http://archive.apache.org/dist/spark/ wget http://archive.apache.org/dist/spark/spark-2.0.2/spark-2.0.2-bin-without-hadoop.tgz tar zxvf spark-2.0.2-bin-without-hadoop.tgz Spark安装 mv spark-2.0.2-bin-without-hadoop ~/spark Spark配置环境变量 vim ~/.bashrc 加入 export SPARK_HOME=/home/hadoop/spark/bin export PATH=$PATH:$SPARK_HOME 应用环境变量 . ~/.bashrc 配置 cp -rf /home/hadoop/spark/conf/log4j.properties.template /home/hadoop/spark/conf/log4j.properties cp -rf /home/hadoop/spark/conf/spark-env.sh.template /home/hadoop/spark/conf/spark-env.sh 修改日志级别 vim /home/hadoop/spark/conf/log4j.properties 修改为 log4j.rootCategory=WARN, console 编辑 spark-env.sh文件 vim /home/hadoop/spark/conf/spark-env.sh 最后一行加入: export SPARK_DIST_CLASSPATH=$(/home/hadoop/hadoop/bin/hadoop classpath) 说明:hadoop 的执行文件 测试 即计算 π 的近似值 /home/hadoop/spark/bin/run-example SparkPi 2>&1 | grep "Pi is roughly" 更多设置请看 http://blog.csdn.net/ouyangyanlan/article/details/52355350 http://dblab.xmu.edu.cn/blog/spark-quick-start-guide/ 来源 http://blog.csdn.net/hangzhi22/article/details/52564148 http://blog.csdn.net/ouyangyanlan/article/details/52355350

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

Hadoop CentOS 7 安装配

本篇根据 给力星 改动而来,文尾有来源 简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 [1] Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。 Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。 来源:百科 JAVA JDK http://blog.csdn.net/fenglailea/article/details/26006647 环境变量设置 http://blog.csdn.net/fenglailea/article/details/52457731 风.fox 环境说明 Centos 7.1 服务器 Hadoop 2.7.3 下载地址 http://archive.apache.org/dist/hadoop/common/ 当前最新版 2.7.3 wget http://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz tar zxvf hadoop-2.7.3.tar.gz 安装Hadoop cd ~ mv hadoop-2.7.3 /home/hadoop/hadoop #目录位置 chmod -R +x /home/hadoop/hadoop/bin # 修改文件权限 chmod -R +x /home/hadoop/hadoop/sbin # 修改文件权限 mkdir -p /home/hadoop/hadoop/tmp 配置 配置文件 core-site.xml vim /home/hadoop/hadoop/etc/hadoop/core-site.xml 修改为 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration> 配置文件 hdfs-site.xml: vim /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml 修改为 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/hadoop/tmp/dfs/data</value> </property> </configuration> 设置用户 JAVA 环境变量也要在此用户中设置 注意:如果不设置用户,那么将会已root用户启动,并且每次启动都要输入root的秘密 创建用户 useradd -m hadoop -s /bin/bash # 创建hadoop用户 passwd hadoop # 修改密码,这个时候会让你输入密码2次 usermod -G root hadoop # 增加管理员权限 设置管理员或用户组权限 执行命令 visudo 方法一 找到以下 一行 去除 前缀#号 %wheel ALL=(ALL) ALL 方法二 在root 那行增加 hadoop一行,如下所示 root ALL=(ALL) ALL hadoop ALL=(ALL) ALL 应用设置 方法一: 退出当前用户,改用hadoop登录,用命令su –,即可获得root权限进行操作 方法二:重新启动系统 设置无密码登录 切换用户 su hadoop 进入当前用户目录 hadoop cd ~ pwd pwd 命令会显示如下目录 /home/hadoop 生成秘钥 mkdir -p /home/hadoop/.ssh cd ~/.ssh/ ssh-keygen -t rsa #如有提示,直接按回车 cat id_rsa.pub >> authorized_keys # 加入授权 启动 格式化 /home/hadoop/hadoop/bin/hdfs namenode -format # namenode 格式化 输出如下信息正常,如有其他问题请看FAQ 16/11/24 15:09:53 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 16/11/24 15:09:53 INFO util.ExitUtil: Exiting with status 0 16/11/24 15:09:53 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1 ************************************************************/ 启动 /home/hadoop/hadoop/sbin/start-dfs.sh # 开启守护进程 判断是否启动成功 jps 出现以下进程 表明启动成功 2433 NameNode 2801 SecondaryNameNode 2911 Jps 2600 DataNode 关闭 /home/hadoop/hadoop/sbin/stop-dfs.sh #这个是关闭命令 更多请看以下目录下 /home/hadoop/hadoop/sbin/ /home/hadoop/hadoop/bin/ 运行 WordCount 实例: /home/hadoop/hadoop/bin/hdfs dfs -mkdir -p /user/hadoop # 创建HDFS目录 /home/hadoop/hadoop/bin/hdfs dfs -mkdir input /home/hadoop/hadoop/bin/hdfs dfs -put /home/hadoop/hadoop/etc/hadoop/*.xml input # 将配置文件作为输入 /home/hadoop/hadoop/bin/hadoop jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+' /home/hadoop/hadoop/bin/hdfs dfs -cat output/* # 查看输出 配置hadoop 环境变量 vim ~/.bashrc 最后一行加入 export HADOOP_HOME=/home/hadoop/hadoop export HADOOP_INSTALL=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin 这些变量在启动 Hadoop 进程时需要用到,不设置的话可能会报错(这些变量也可以通过修改 /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh 实现)。 集群配置 请看 http://www.powerxing.com/install-hadoop-simplify/ http://www.powerxing.com/install-hadoop-cluster/ 集群 http://www.powerxing.com/install-hadoop/ 伪分布式(单机多个进程) FAQ 1. SHUTDOWN_MSG: Shutting down NameNode at localhost.localdomain/127.0.0.1 主机名称问题 编辑以下文件查看主机名称是否是 localhost,如果不是则修改。一般只改第一个就可以解决问题 vim /etc/hostname HOSTS vim /etc/hosts 如果有 localhost.localdomain(如下) 把它修改为 localhost 127.0.0.1 localhost localhost.localdomain 重启系统 reboot 这里有一个讨巧的方法,上面一步重启不执行,执行 hostname localhost 这个意思是临时修改主机名称 2 mkdir: Call From localhost/127.0.0.1 to localhost:9000 failed on connection exception mkdir: Call From localhost/127.0.0.1 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused 出现这个问题的原因,你没有格式化,先退出,重新执行格式化命令 查看: http://www.powerxing.com/install-hadoop-simplify/

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

centos7安装配置docker

// 安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 yum install -y yum-utils device-mapper-persistent-data lvm2 // 设置yum源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo // 可以查看所有仓库中所有docker版本,并选择特定版本安装 yum list docker-ce --showduplicates | sort -r // 安装docker yum install docker-ce-18.09.6-3.el7 // 启动并加入开机启动 systemctl start docker systemctl enable docker // 验证安装是否成功(有client和service两部分表示docker安装启动都成功了) docker version // 建议更换docker的镜像源:// 修改或创建daemon.json文件:vi /etc/docker/daemon.json// 将以下配置写入到文件中,保存并退出{"registry-mirrors": ["http://hub-mirror.c.163.com"]} // 重启docker: service docker restart // 安装docker-compose// 具体可以参考https://github.com/docker/compose/releases curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose

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

centos7安装配置Jboss

一、安装JDK 1、下载JDK 地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载后上传到centos7 2、安装 下载得到压缩包jdk-8u171-linux-x64.tar.gz,解压到/usr/local/目录,并将目录重命名为jdk1.8 3、配置环境变量 在/etc/profile文件中添加以下内容: #设置java环境 JAVA_HOME=/usr/local/jdk1.8/ JRE_HOME=/usr/local/jdk1.8/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOMR/lib export JAVA_HOME JRE_HOME PATH CLASS_PATH 4、验证 在命令行输入java -version,出现以下内容: [root@localhost jdk1.8]# java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) [root@localhost jdk1.8]# 二、安装Jboss 1、下载Jboss 各版本下载链接见如下博客: https://teddysun.com/260.html 这里选择下载jboss-eap-6.4.0.zip 下载后上传到centos7 2、安装 解压jboss-eap-6.4.0.zip,放到目录/usr/local/ 3、配置环境变量 在文件/etc/profile中添加以下内容: #配置jboss变量 export JBOSS_HOME=/usr/local/jboss-eap-6.4.0/ 4、启动服务 使用jboss之前,先设置文件的权限# chmod -R 777 /usr/local/jboss-eap-6.4.0 然后进入jboss的bin目录,运行脚本 ./standalone.sh,会 以a single server instance的模式启动Jboss 运行脚本 ./domain.sh,会以allowing control and management of multiple instances的模式启动JBoss 5、验证 (1) 、在本机验证 启动的时候,进程若不放在后台,会占用当前shell,可在另一个shell进行验证,执行命令curl -I 127.0.0.1:8080 出现如下内容则表示正常: [root@localhost ~]# curl -I 127.0.0.1:8080 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Accept-Ranges: bytes ETag: W/"1496-1427480780000" Last-Modified: Fri, 27 Mar 2015 18:26:20 GMT Content-Type: text/html Content-Length: 1496 Date: Mon, 07 May 2018 11:35:44 GMT (2)、在局域网其他机器上验证 首先,配置centos7的防火墙和selinux,或者关闭它们。 然后修改jboss配置文件,vim /usr/local/jboss-eap-6.4.0/standalone/configuration/standalone.xml 找到如下内容, <interface name="public"> <inet-address value="${jboss.bind.address:127.0.0.1}"/> </interface> 将127.0.0.1修改为允许访问的ip地址即可,或者写为所有ip0.0.0.0,保存退出。 浏览器页面如下图:

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

CentOS 7.4 安装配置 jdk 8

安装说明 系统环境:centos-7.4 安装方式:rpm安装 软件:jdk-8u151-linux-x64.rpm 安装JDK 上传新的jdk-8u151-linux-x64.rpm软件到/home/执行以下操作: [root@test home]# rpm -ivh jdk-8u151-linux-x64.rpm 查看Java 版本 现在,用一下的命令来查看安装的JDK的版本号。 [root@test home]# java -version 输出结果如下: java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode) 正如上面所显示的那样,最新版本的JDK已经被安装好了 设置全局环境变量 在/etc/profile.d/下创建一个叫做java.sh的文件 vi /etc/profile.d/java.sh #!/bin/bash JAVA_HOME=/usr/java/jdk1.8.0_151 JRE_HOME=$JAVA_HOME/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/dt.jar export PATH JAVA_HOME JRE_HOME CLASSPATH 使环境变量生效 执行如下命令: source /etc/profile.d/java.sh

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

centos7安装配置memcached

1.memcached的安装 yum install memcached memcached -h vim /etc/sysconfig/memcached PORT=”11211″ USER=”memcached” MAXCONN=”1024″ CACHESIZE=”64″ OPTIONS=”" systemctl restart memcached systemctl start memcached systemctl enable memcached systemctl status memcached systemctl stop memcached memcached-tool 127.0.0.1:11211 stats memcached-tool 127.0.0.1:11211 # Item_Size Max_age Pages Count Full? Evicted Evict_Time OOM 2 120B 727s 1 7 yes 0 0 0 4 192B 7243s 1 3 yes 0 0 0 5 240B 72693s 1 14 yes 0 0 0 9 600B 0s 1 0 yes 0 0 0 10 752B 79s 1 1 yes 0 0 0 # slab class编号 Item_Size chunk大小 Max_age LUR内最旧的记录生存时间 Pages 分配给slab的页数 Count slab内的记录数 Full? slab内是否含有空闲chunk 2./etc/php.d/memcache.ini详解 ; ----- Enable memcache extension module extension=memcache.so ; ----- Options for the memcache module ; see http://www.php.net/manual/en/memcache.ini.php ; Whether to transparently failover to other servers on errors ;memcache.allow_failover=1 (连接出错时Memcache扩展是否故障转移到其他服务器上默认为1) ; Data will be transferred in chunks of this size ;memcache.chunk_size=32768 (控制数据传输的大小) ; Autocompress large data ;memcache.compress_threshold=20000 ; The default TCP port number to use when connecting to the memcached server ;memcache.default_port=11211 (设置连接Memcache所使用的TCP端口) ; Hash function {crc32, fnv} ;memcache.hash_function=crc32 ; Hash strategy {standard, consistent} ;memcache.hash_strategy=consistent (哈希策略) ; Defines how many servers to try when setting and getting data. ;memcache.max_failover_attempts=20 (限制连接到持久性数据或检索数据的服务器数目) ; The protocol {ascii, binary} : You need a memcached >= 1.3.0 to use the binary protocol ; The binary protocol results in less traffic and is more efficient ;memcache.protocol=ascii ; Redundancy : When enabled the client sends requests to N servers in parallel ;memcache.redundancy=1 ;memcache.session_redundancy=2 ; Lock Timeout ;memcache.lock_timeout = 15 ; ----- Options to use the memcache session handler ; RPM note : save_handler and save_path are defined ; for mod_php, in /etc/httpd/conf.d/php.conf ; for php-fpm, in /etc/php-fpm.d/*conf ; Use memcache as a session handler ;session.save_handler=memcache ; Defines a comma separated of server urls to use for session storage;session.save_path="tcp://localhost:11211?persistent=1&weight=1&timeout=1&retry_interval=15" 2.php操作memcache的使用测试 2.1创建KEY值数据 vi test1.php <?php $mem = new memcache; $mem->connect("127.0.0.1", 11211); $mem->set('key20', 'This is a test!', 0, 60); $val = $mem->get('key20'); echo $val; ?> 2.2替换KEY值数据 vi test2.php <?php $mem = new memcache; $mem->connect("127.0.0.1", 11211); $mem->replace('key20', 'This is replace value', 0, 60); $val = $mem->get('key20'); echo $val; ?> 2.3删除KEY值数据 vi test3.php <?php $mem = new memcache; $mem->connect("127.0.0.1", 11211); $mem->delete('key20'); $val = $mem->get('key20'); echo $val; ?> php -f test1.php(执行php -h看帮助) 命令帮助: Memcache::add // 添加一个值,如果已经存在,则返回false Memcache::addServer // 添加Memcache地址 Memcache::close // 关闭一个Memcache的连接 Memcache::connect // 打开一个到Memcache的连接 Memcache::decrement // 对保存的某个key中的值进行减法操作 Memcache::delete // 删除一个Memcache上的key值 Memcache::flush // 刷新所有Memcache上保存的项目(类似于删除所有的保存的项目) Memcache::get // 从Memcache上获取一个key值 Memcache::getExtendedStats // 获取进程池中所有进程的运行系统统计 Memcache::getServerStatus // 获取运行服务器的参数 Memcache::getStats //获取当前Memcache服务器运行的状态 Memcache::getVersion // 返回运行的Memcache的版本信息 Memcache::increment // 对保存的某个key中的值进行加法操作 Memcache::pconnect // 打开一个到Memcache的长连接 Memcache::replace // 替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set) Memcache::set // 向Memcache添加一个值,如果已经存在,则覆写 Memcache::setCompressThreshold // 对大于某一大小的数据进行压缩 Memcache::setServerParams // 在运行时修改服务器的参数 2.查看memcached性能状态 2.1查看服务器性能信息 #telnet localhost 11211 stats(此处输入stats命令) STAT pid 1277 (进程ID) STAT uptime 176145 (服务器运行秒数,秒) STAT time 1448592684 (服务器当前unix时间戳) STAT version 1.4.15 (服务器版本) STAT libevent 2.0.21-stable STAT pointer_size 64 (操作系统字大小 32/64位) STAT rusage_user 3.869494 (进程累计用户时间,秒) STAT rusage_system 4.636292 (进程累计系统时间,秒) STAT curr_connections 11 (当前打开连接数) STAT total_connections 21 (曾打开的连接总数) STAT connection_structures 12 (服务器分配的连接结构数) STAT reserved_fds 20 STAT cmd_get 483 (执行get命令总数) STAT cmd_set 144 (执行set命令总数) STAT cmd_flush 0 (指向flush_all命令总数) STAT cmd_touch 0 STAT get_hits 369 (get未命中次数) STAT get_misses 114 (get未命中次数) STAT delete_misses 0 (delete未命中次数) STAT delete_hits 0 (delete命中次数) STAT incr_misses 0 (incr未命中次数) STAT incr_hits 0 (incr命中次数) STAT decr_misses 0 (decr未命中次数) STAT decr_hits 0 (decr命中次数) STAT cas_misses 0 (cas未命中次数) STAT cas_hits 0 (cas命中次数) STAT cas_badval 0 (使用擦拭次数) STAT touch_hits 0 STAT touch_misses 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 82819 (读取字节总数) STAT bytes_written 104266 (写入字节总数) STAT limit_maxbytes 67108864 (分配的内存数(字节)) STAT accepting_conns 1 (目前接受的连接数) STAT listen_disabled_num 0 STAT threads 4 (线程数) STAT conn_yields 0 STAT hash_power_level 16 STAT hash_bytes 524288 STAT hash_is_expanding 0 STAT bytes 4789 (存储item字节数) STAT curr_items 20 (item个数) STAT total_items 144 (item总数) STAT expired_unfetched 15 STAT evicted_unfetched 0 STAT evictions 0 (获取空间删除item的总数) STAT reclaimed 36 END quit(此处输入quit退出memcached状态查看) 2.2查看每个slab中存储items的详细信息 #telnet localhost 11211 stats items(此处输入stats命令) STAT items:4:number 3 STAT items:4:age 2140(当前数据中缓存最久的时间,一般小于evicted_time(不为0)时间) STAT items:4:evicted 0(如果evicted不是0,说明slab开始提前剔除数据,需要注意) STAT items:4:evicted_nonzero 0 STAT items:4:evicted_time 0(最后被剔除数据的缓存时间,不是发生LRU就memcached负载过量) STAT items:4:outofmemory 0 STAT items:4:tailrepairs 0 STAT items:4:reclaimed 6 STAT items:4:expired_unfetched 1 STAT items:4:evicted_unfetched 0 STAT items:5:number 15 STAT items:5:age 67590 STAT items:5:evicted 0 STAT items:5:evicted_nonzero 0 STAT items:5:evicted_time 0 STAT items:5:outofmemory 0 STAT items:5:tailrepairs 0 STAT items:5:reclaimed 22 STAT items:5:expired_unfetched 10 STAT items:5:evicted_unfetched 0 STAT items:10:number 1 STAT items:10:age 283 STAT items:10:evicted 0 STAT items:10:evicted_nonzero 0 STAT items:10:evicted_time 0 STAT items:10:outofmemory 0 STAT items:10:tailrepairs 0 STAT items:10:reclaimed 13 STAT items:10:expired_unfetched 7 STAT items:10:evicted_unfetched 0 END 2.3查看slab内存分配信息 #telnet localhost 11211 stats slabs(此处输入stats命令) STAT 4:chunk_size 192 (当前slab每个chunk的大小,固定值) STAT 4:chunks_per_page 5461(每个page能够存放的chunk数,固定值) STAT 4:total_pages 1 (分配给当前slab的page总数,单位M。slab剔除严重,该值会太少) STAT 4:total_chunks 5461 (当前slab最多能够存放的chunk数,=chunks_per_page*total_pages) STAT 4:used_chunks 3 (已经被占用的chunks总数) STAT 4:free_chunks 5458 (过期数据空出的chunk里还没有被使用的chunk数) STAT 4:free_chunks_end 0 (新分配但还没有被使用的chunk数) STAT 4:mem_requested 555 STAT 4:get_hits 136 STAT 4:cmd_set 9 STAT 4:delete_hits 0 STAT 4:incr_hits 0 STAT 4:decr_hits 0 STAT 4:cas_hits 0 STAT 4:cas_badval 0 STAT 4:touch_hits 0 STAT 5:chunk_size 240 STAT 5:chunks_per_page 4369 STAT 5:total_pages 1 STAT 5:total_chunks 4369 STAT 5:used_chunks 14 STAT 5:free_chunks 4355 STAT 5:free_chunks_end 0 STAT 5:mem_requested 3158 STAT 5:get_hits 158 STAT 5:cmd_set 43 STAT 5:delete_hits 0 STAT 5:incr_hits 0 STAT 5:decr_hits 0 STAT 5:cas_hits 0 STAT 5:cas_badval 0 STAT 5:touch_hits 0 STAT 10:chunk_size 752 STAT 10:chunks_per_page 1394 STAT 10:total_pages 1 STAT 10:total_chunks 1394 STAT 10:used_chunks 1 STAT 10:free_chunks 1393 STAT 10:free_chunks_end 0 STAT 10:mem_requested 646 STAT 10:get_hits 104 STAT 10:cmd_set 105 STAT 10:delete_hits 0 STAT 10:incr_hits 0 STAT 10:decr_hits 0 STAT 10:cas_hits 0 STAT 10:cas_badval 0 STAT 10:touch_hits 0 STAT active_slabs 3 STAT total_malloced 3145360 END 报错1:执行memcached -vv报错can't run as root without the -u switch 解决1:memcached -vv -u root 3.增加memcache缓存日志 yum -y install php-pecl-memcache 如果是PHP56版本的应该运行 yum -y install php56w-pecl-memcache 防火墙放开11211 firewall-cmd --permanent --zone=public --add-port=11211/tcp 检查端口是否开放 echo stats | nc memcache_host_name_or_ip 11211 增加日志 /bin/memcached -d -m 512 -l 127.0.0.1 -p 10000 -u root -vv >> /tmp/memcached.log 2>&1 tail -f /tmp/memcached.log 4.memcache缓存mysql的测试页面 vi mysql-memcache.php <?php $host = 'IP:3306'; $user = 'guowang'; $passwd = '123456'; $db = 'test'; $conn = mysql_connect($host,$user,$passwd); mysql_select_db($db,$conn); $sql = 'select * from t order by id desc'; $result = mysql_query($sql,$conn); while ($row = mysql_fetch_array($result,MYSQL_ASSOC)){ $test_key[] = $row; } $sql = md5($sql); $mem = new Memcache; $mem->connect("IP", 11211); $mem->set($sql,$test_key, MEMCACHE_COMPRESSED, 600); print_r($mem->get($sql)); ?> 5.memcached禁止外网访问 lnmp默认安装的memcached是可以外网访问的,对于我这个小站来说外网不会用到,所以只允许内网用。修改文件vi /etc/init.d/memcached PORT=11211 USER=root MAXCONN=1024 CACHESIZE=32 OPTIONS="" IP=127.0.0.1 RETVAL=0 prog="memcached" start () { echo -n $"Starting $prog: " memcached -d -l $IP -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached.pid $OPTIONS RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached } 如果有安装iptables的话可以用iptables来禁止外网访问 本文转自 guowang327 51CTO博客,原文链接:http://blog.51cto.com/guowang327/1709503,如需转载请自行联系原作者

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

装配置Hyper-V (1)

虚拟化技术在近年得到了快速发展,各大厂商也都相继推出了一系列虚拟化产品。这些产品大致可以分为两类,一类是桌面虚拟化,典型产品如VMware公司的VMware WorkStation和微软公司的Virtual PC;另一类是服务器虚拟化,典型产品如VMware公司的VMware vSphere和微软公司的Hyper-V。 桌面虚拟化属于寄居架构,而服务器虚拟化则属于裸金属架构,这两种架构如下图所示。 从图中可以看出,寄居架构分为5个层次,由下而上分别是计算机硬件、主操作系统、虚拟化软件、虚拟硬件和虚拟操作系统,虚拟操作系统处于较高的层次,它到硬件之间的数据要经过3层转换。而裸金属架构没有宿主机和虚拟机之分,只有父分区和子分区,父分区和子分区虽然看似可以对应之前的宿主机和虚拟机,但是其地位已经基本平等,子分区中安装的操作系统通过虚拟化软件可以直接控制计算机硬件,其性能相比寄居架构有着天壤之别。 下面我们就来体验一下采用裸金属架构的Hyper-V的强大威力。 1. 安装Hyper-V角色 要使用Hyper-V,首先就要在“服务器管理器”中安装相应的服务角色。 在【服务器管理器】中添加Hyper-V角色。 Hyper-V安装完成后,需要重启系统。 2. 配置虚拟网络 Hyper-V角色安装完成后,可以通过“Hyper-V管理器”对其进行管理,首先需要做的是配置虚拟网络。 虚拟机与虚拟机之间或与外部网络连接时,都需要通过虚拟网络来实现,因而在创建虚拟机之前必须要先把虚拟网络配置好。 Hyper-V有三种不同模式的虚拟网络:外部模式、内部模式、专用模式。 “外部”网络跟VMWare中的“bridged桥接”模式或Virtual PC中的“物理网卡”模式类似,允许虚拟机通过主机的物理网卡与主机或是与物理网络中的其他计算机进行通信。生产环境中的Hyper-V虚拟机一般都是使用“外部”虚拟网络模式。 内部模式类似于VMWare中的“Host only”模式或Virtual PC中的“Local only”模式,所有设为内部网络模式的Hyper-V虚拟机,它们共同组成了一个虚拟网络,这个网络与真实的物理网络是隔开的,但是所有的虚拟机都可以与主机之间进行通信。 为避免IP冲突,在我们实验环境中的Hyper-V虚拟机大都采用内部网络模式。 采用“专用”网络模式的虚拟机彼此之间可以通信,但是无法与主机之间通信,一般不采用这种模式。 在“Hyper-V管理器”中右键单击服务器,在弹出的快捷菜单中选择“虚拟网络管理器”命令,打开“虚拟网络管理器”窗口。 在“创建虚拟网络”中,先选中要创建的网络类型为“外部”,然后点击“添加”按钮,新建一个外部网络。 为虚拟网络命名“bridged”,在“连接类型”中选择“外部”,并指定要连接到的主机物理网卡。 然后再创建一个内部模式的虚拟网络,网络名为“local”。 需要注意,每创建一个虚拟网络就会在主机中添加一块虚拟网卡,虚拟机就是通过这些虚拟网卡与主机之间进行通信的。如图10中的“本地连接3”就对应着“bridged”外部网络,“本地连接4”对应“local”内部网络。主机要与虚拟机之间通信,就得为相应的虚拟网卡设置合适的IP。 3. 创建虚拟机 虚拟网络配置好之后,下面开始创建虚拟机。 在服务器上点击右键,选择“新建/虚拟机”,打开“新建虚拟机向导”。 首先创建一台名为“2008R2BASE”的虚拟机,并指定存放位置。 为虚拟机分配1GB内存。 将网络模式设置为“local”内部网络。 为虚拟机创建虚拟硬盘,并指定存放位置。这个虚拟硬盘的类型为“动态扩展硬盘”,当将数据存储到虚拟机中时,扩展名为“.vhd”的磁盘文件会逐渐变大,直至达到该硬盘所指定的大小127GB。 在“安装选项”中设置利用iso映像文件为虚拟机安装操作系统。 在“摘要”界面中显示了虚拟机的配置信息,点击“完成”按钮,结束虚拟机的创建。 4. 为虚拟机安装系统 在“Hyper-V管理器”中找到创建好的虚拟机“2008R2BASE”,右键单击,选择“连接”。 连接到虚拟机之后,点击工具栏上的“启动”按钮,将虚拟机开机并开始安装系统。 系统的安装过程这里不再赘述。系统安装好之后的虚拟机如下图所示。点击“操作”菜单中的“CTRL+ALT+DELETE”命令打开登录对话框,输入用户名administrator及密码,即可登录系统。 为虚拟机设置IP地址(192.168.1.1)等信息,并用ping命令测试是否可以与主机(本地连接4的IP:192.168.1.254)进行通信。 如果无法ping通,也可能是因为防火墙导致的。在主机防火墙的“入站规则”中启用“文件和打印机共享(回显请求-ICMPv4)”规则,应该就可以ping通了。如果是在主机上ping虚拟机,那同样需要修改虚拟机的防火墙规则。 然后在虚拟机的“操作”菜单中点击“快照”,为虚拟机创建快照“snap1”,以备系统出现问题时可以快速进行还原。 本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1149662

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

MQ-RabbitMq部署安装配

环境准备 本次实验使用的是VMvare虚拟机。详情如下 hostname: node1.server ip地址:192.168.0.150 网卡:eth0,eth1 系统及硬件:CentOS 7.2 内存2G,硬盘50G 一、 什么是RabbitMq 消息队列又称为MQ,应用程序间的消息通信工具,其有利于程序解耦、多语言集成、异步通信、扩展和简单负载均衡等,是生产-消费者模型的典型代表。常见MQ产品有RabbitMQ ZeroMQ Kafka等等。 RabbitMQ,老牌MQ产品,基于erlang语言,实现对AMQP等协议的支持,重量级,适合企业级应用开发;Kafka,linkedin开源MQ产品,追求高吞吐量,适合于大量数据的收集业务,如互联网业务产生的大量日志数据;ZeroMQ,号称最快的MQ,提供了一套异步消息通信库,可实现RabbitMQ不能实现的高级复杂队列;Kafka和RabbitMQ都需要搭建消息代理服务器,采用中间件模式。ZeroMQ采用非中间件模式,不需要搭建消息代理服务器。 二、 部署 # yum install gcc gcc -c++makegccgcc-c++ kernel-devel m4 ncurses-devel openssl-develzlib zlib-devel xmlto libgnomeui-devel nc libX* java* tk unixODBC unixODBC-devel -y # yum install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm -y # yuminstall rabbitmq-server -y # systemctl enable rabbitmq-server.service # systemctl start rabbitmq-server.service Job for rabbitmq-server.service failed becausethe control process exited with error code. See "systemctl statusrabbitmq-server.service"and"journalctl -xe" for details. 解决方法: 修改主机名和hosts 修改前: # hostnamectl status Static hostname: node1.server Icon name: computer-vm Chassis: vm Machine ID: d359f0058624494aa3c144477c6d97b8 Boot ID: bdd32e5df98a41259a441a079c0c44b3 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-327.el7.x86_64 Architecture: x86-64 修改后: # hostnamectl --static set-hostname node1 # hostnamectl status Static hostname: node1 Transient hostname: node1.server Icon name: computer-vm Chassis: vm Machine ID: d359f0058624494aa3c144477c6d97b8 Boot ID: bdd32e5df98a41259a441a079c0c44b3 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-327.el7.x86_64 Architecture: x86-64 # cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.150 node1 启用Rabbitmq的web管理插件 RabbitMQ提供了一套插件机制,方便功能扩展。这里介绍一个最常用的:rabbitmq_management。这款插件提供了完善的web管理和监控功能,提供了各项指标。 # rabbitmq-plugins enable rabbitmq_management The following plugins have been enabled: Mochiweb Webmachine rabbitmq_web_dispatch amqp_client rabbitmq_management_agent rabbitmq_management Applying plugin configuration to rabbit@node1... started 6 plugins. 新建Rabbitmq用户并授权 # rabbitmqctl add_user openstack openstack Creating user "openstack" ... # rabbitmqctl set_permissions openstack ".*" ".*" ".*" Setting permissions for user "openstack" in vhost "/" ... # systemctl restart rabbitmq-server.service查看Rabbit的端口,其中5672是服务端口,15672是web管理端口,25672是做集群的端口 # ss-tunlp|grep5672 在web界面添加openstack用户,设置权限,首次登陆必须使用账号和密码,必须都是guest role设置为administrator,并设置openstack的密码为openstack 若想要监控Rabbit,即可使用下图中的API 本文转自 linuxzkq 51CTO博客,原文链接:http://blog.51cto.com/linuxzkq/1867488

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

iOS:CocosPods的装配和配置ReactiveCocoa

关于CocosPods的安装和配置ReactiveCocoa 1. CocoaPods和ReactiveCocoa的安装 CocoaPods是iOS最常用最有名的类库管理工具 使用ReactiveCocoa之前可以通过安装CocoaPods来管理它 在终端敲入以下命令: $ sudo gem sources --remove https://rubygems.org/ //等有反应之后再敲入以下命令 $ sudo gem sources -a http://ruby.taobao.org/ $ sudo gem install cocoapods CocoaPods就装好了,很简单。 接下来可以使用: $ pod search ReactiveCocoa 来查看关于 ReactiveCocoa框架的相关信息 然后在你的项目的根目录中新建一个Podfile文件,添加内容如下: pod 'ReactiveCocoa' 使用cd命令 进入到要使用ReactiveCocoa的iOS项目的根目录中,执行如下命令安装SDK: $ pod install 如果安装缓慢, 可以改用以下命令安装: $ pod install --verbose --no-repo-update 如果你是打开着项目安装的 那么装完之后要先关掉项目 而且 以后打开项目就用 .xcworkspace 打开,而不是之前的.xcodeproj文件。 2. 在项目中配置ReactiveCocoa 1.打开"Build Phases" 选中相应的target, 添加 RAC 到 "Link Binary With Libraries".加上libReactiveCocoa-iOS.a 2.在Header Search Paths 中添加$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts/include" 3.在 "Other Linker Flags" 添加 -ObjC 4.在Prefix.pch文件中 将RAC的头文件加进去 #import "ReactiveCocoa.h" 接下来就可以在项目中使用ReactiveCocoa开发了 程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式! 本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/5132467.html ,如需转载请自行联系原作者

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

ansible安装配置和基本使用

一、ansible安装 ansible依赖于Python 2.6或更高的版本、paramiko、PyYAML及Jinja2。 1.1 编译安装 解决依赖关系 #yum-yinstallpython-jinja2PyYAMLpython-paramikopython-babelpython-crypto 解压安装包 #tarxfansible-1.5.4.tar.gz #cdansible-1.5.4 编译安装 #pythonsetup.pybuild #pythonsetup.pyinstall 拷贝配置文件 #mkdir/etc/ansible #cp-rexamples/*/etc/ansible 1.2 rpm包安装 使用阿里云镜像源即可,这里为了方便使用,就直接使用yum安装了。 Fedora用户可直接安装Ansible,但RHEL或CentOS用户,需要配置EPEL #yuminstall-yepel-release #yuminstall-yansible 注意:不同版本的ansible的功能差异可能较大。 二、配置 配置文件介绍: 配置文件:/etc/ansible/ansible.cfg hostfile=/etc/ansible/hosts#指定默认hosts配置的位置 host_key_checking=False#不进行host_key检查,省去目标key发生变化时输入(yes/no)的步骤 ask_pass=True#每次执行ansible命令是否询问ssh密码 ask_sudo_pass=True#每次执行ansible命令时是否询问sudo密码 主机清单:/etc/ansible/hosts 主程序:ansible、ansible paly-book、ansible-doc 1.将要管理的主机纳入/etc/ansible/hosts配置文件中,可以填写IP或是主机名 [WebServers] 10.10.10.3 10.10.10.4 2.基于ssh的方式与被管理的主机进行通信,在管理的主机上(部署ansible的主机上)生成一对非对称密钥,将公钥发给被管理的主机。 (1)生成一对密钥:ssh-keygen -t rsa [root@wlmyum.repos.d]#ssh-keygen-trsa#默认存放的地方为/root/.ssh目录下 Generatingpublic/privatersakeypair. Enterfileinwhichtosavethekey(/root/.ssh/id_rsa): Enterpassphrase(emptyfornopassphrase): Entersamepassphraseagain: Youridentificationhasbeensavedin/root/.ssh/id_rsa. Yourpublickeyhasbeensavedin/root/.ssh/id_rsa.pub. Thekeyfingerprintis: e8:60:67:4d:29:90:d2:4d:7d:52:2f:c7:e4:87:a4:80root@wlm Thekey'srandomartp_w_picpathis: +--[RSA2048]----+ |..+.o...o| |.o.Eoo.B.| |..ooo*.| |=o.| |o+S| |.=| |.| || || +-----------------+ (2)将公钥发给要管理的主机:ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.10.10.3 [root@wlmyum.repos.d]#ssh-copy-id-i/root/.ssh/id_rsa.pubroot@10.10.10.4 Theauthenticityofhost'10.10.10.4(10.10.10.4)'can'tbeestablished. RSAkeyfingerprintis43:8a:cc:2c:6a:07:0e:16:17:04:b5:dd:2c:4a:9a:41. Areyousureyouwanttocontinueconnecting(yes/no)?yes /usr/bin/ssh-copy-id:INFO:attemptingtologinwiththenewkey(s),tofilteroutanythatarealreadyinstalled /usr/bin/ssh-copy-id:INFO:1key(s)remaintobeinstalled--ifyouarepromptednowitistoinstallthenewkeys root@10.10.10.4'spassword: Permissiondenied,pleasetryagain. root@10.10.10.4'spassword: Numberofkey(s)added:1 Nowtryloggingintothemachine,with:"ssh'root@10.10.10.4'" andchecktomakesurethatonlythekey(s)youwantedwereadded. 3.开始使用我们的第一条ansible命令,进行验证: #ansibleall-mping [root@wlmyum.repos.d]#ansibleall-mping 10.10.10.4|SUCCESS=>{ "changed":false, "ping":"pong" } 10.10.10.3|SUCCESS=>{ "changed":false, "ping":"pong" } 命令介绍: 简单实用格式:ansible<host-pattern>[-mmodule_name][-aargs][options] ansibleall-mping: all代表所有被管理的主机都进行操作-mping指定使用ping模块,ping通了返回的结果为pong 三、基本使用 1.常用命令 ansible-doc命令:获取模块列表,及模块使用格式; ansible-doc-l:获取列表 ansible-doc-smodule_name:获取指定模块的使用信息 2.ansible命令格式 ansible<host-pattern>[-fforks][-mmodule_name][-aargs] <host-pattern> 指明管控主机,以模式形式表示或者直接给定IP,必须事先定义在文件中;all设置所有 [-f forks] 指明每批管控多少主机,默认为5个主机一批次 [-m module_name] 使用何种模块管理操作,所有的操作都需要通过模块来指定 [-a args] 指明模块专用参数;args一般为key=value格式注意:command模块的参数非为kv格式,而是直接给出要执行的命令即可; 注意:<host-pattern>默认读取/etc/ansible/hosts,也可以指明自定义文件路径 -iPATH, --inventory=PATH:指明使用的host inventory文件路径; 3.常用模块介绍(module_name) 1)command模块:远程主机上运行命令 例如: ansibleWebServers-mcommand-a"ls/tmp" command模块可以省略,此命令可以直接写为: ansibleWebServers-a"ls/tmp" [root@wlmyum.repos.d]#ansibleWebServers-mcommand-a"ls/tmp" #WebServers组里的所有主机执行ls/tmp操作 10.10.10.4|SUCCESS|rc=0>> ansible_1DyyqF keyring-e9DiYC keyring-teKcdb orbit-gdm pulse-bcZcwuv9QjKR pulse-qnyrpnncnwcb 10.10.10.3|SUCCESS|rc=0>> ansible_itWaHf systemd-private-6d81b379511c48219f27f97e16064052-colord.service-RK8yfy systemd-private-6d81b379511c48219f27f97e16064052-cups.service-wm4x9x systemd-private-6d81b379511c48219f27f97e16064052-httpd.service-UXyj9P systemd-private-6d81b379511c48219f27f97e16064052-named.service-Nw7Sew systemd-private-6d81b379511c48219f27f97e16064052-rtkit-daemon.service-QM4tRC systemd-private-6d81b379511c48219f27f97e16064052-vmtoolsd.service-p58UCc 给远程主机添加用户,并设置密码: ansibleWebServers-a"useraddansible1" ansibleWebServers-a"echodtsdts|passwd--stdinansible1" #直接这样使用不会成功,不支持管道,下面介绍shell模块 [root@wlmyum.repos.d]#ansibleWebServers-a"useraddansible1" 10.10.10.4|SUCCESS|rc=0>> 10.10.10.3|SUCCESS|rc=0>> [root@wlmyum.repos.d]#ansibleWebServers-a"echodtsdts|passwd--stdinansible1" 10.10.10.4|SUCCESS|rc=0>> dtsdts|passwd-stdinansible1#只显示了“dtsdts|passwd--stdinansible1”内容 10.10.10.3|SUCCESS|rc=0>> dtsdts|passwd-stdinansible1 2)shell模块:远程主机在shell进程下运行命令,支持shell特性,当然也支持管道 给用户添加密码: ansibleWebServers-mshell-a"echodtsdts|passwd--stdinansible1" [root@wlmyum.repos.d]#ansibleWebServers-mshell-a"echodtsdts|passwd--stdinansible1" 10.10.10.4|SUCCESS|rc=0>> 更改用户ansible1的密码。 passwd:所有的身份验证令牌已经成功更新。 10.10.10.3|SUCCESS|rc=0>> 更改用户ansible1的密码。 passwd:所有的身份验证令牌已经成功更新。 3) copy模块:把当前主机文件复制到远程主机位置,可以指定mode(权限)、own(所属主)、group(所属组) ansibleall-mcopy-a"src=/tmp/abc.txtdest=/root/mode=644owner=ansible1group=root" #src="本地主机文件"dest="远程主机文件" [root@wlmyum.repos.d]#ansibleall-mcopy-a"src=/tmp/abc.txtdest=/root/" 10.10.10.4|SUCCESS=>{ "changed":true, "checksum":"325287cee456533bf76025312e5d05e842cb43a9", "dest":"/root/abc.txt", "gid":0, "group":"root", "md5sum":"1c6d47c6e4d59c630751b47fff140b89", "mode":"0644", "owner":"root", "size":15, "src":"/root/.ansible/tmp/ansible-tmp-1484639082.19-114656107854348/source", "state":"file", "uid":0 } 10.10.10.3|SUCCESS=>{ "changed":true, "checksum":"325287cee456533bf76025312e5d05e842cb43a9", "dest":"/root/abc.txt", "gid":0, "group":"root", "md5sum":"1c6d47c6e4d59c630751b47fff140b89", "mode":"0644", "owner":"root", "size":15, "src":"/root/.ansible/tmp/ansible-tmp-1484639082.46-26533455703361/source", "state":"file", "uid":0 } 4)cron模块:在远程主机制定crontab周期性计划任务 minute=hour=day=month=weekday=job=name=(必须填写)state= 例如: ansibleall-mcron-a"minute=*/10job='/sbin/ntpdate10.10.10.10&>/dev/null'name=Synctime" 在被管理的主机上使用crontab -l查看 [root@WebServer~]#crontab-l #Ansible:Synctime */10****/sbin/ntpdate10.10.10.10&>/dev/null 在管理(ansible)的主机上,可以删除制定的计划任务 ansibleall-mcron-a"state=absentname=Synctime"#name="name" [root@wlmyum.repos.d]#ansibleall-mcron-a"state=absentname=Synctime" 10.10.10.4|SUCCESS=>{ "changed":true, "envs":[], "jobs":[] } 10.10.10.3|SUCCESS=>{ "changed":true, "envs":[], "jobs":[] } 5)fetch模块:和copy相反,从远程主机拷贝文件到本地主机 ansibleWebServers-mfetch-a“src=/root/abc.txtdest=/root/kel/flat=yes” src="远程主机文件"dest="本地主机"可以不要flat=yes参数 flat=yes作用: 当dest=/root/kel/,abc.txt会保存在/root/kel/目录下 当dest=/root/kel,会拷贝abc.txt文件,并命名为kel 6)file模块:file模块它包含了文件、文件夹、超级链接类的创立、拷贝、移动、删除操作 ansibleWebServers-mfile-a #修改文件的所有组、人、权限。 path=/etc/foo.confowner=foogroup=foomode=0644 #操作链接的案例 src=/file/to/link/todest=/path/to/symlinkowner=foogroup=foostate=link #参数化案例 src=/tmp/{{item.path}}dest={{item.dest}}state=linkwith_items: -{path:'x',dest:'y'}-{path:'z',dest:'k'} #使用touch来创建一个空文件并定义权限 path=/etc/foo.confstate=touchmode="u=rw,g=r,o=r" #touch一个空文件,并且修改权限 path=/etc/foo.confstate=touchmode="u+rw,g-wx,o-rwx" 7)yum模块:用于yum安装包安装和卸载等操作 #ansibleWebServers-myum-a“name=httpd” #在远程主机上使用yum安装htpd服务 8)service模块:服务管理,就是service命令 ansibleall-mservice-a"" #不管当前什么情况,启动apache name=httpdstate=started #不管当前什么情况,停止apache name=httpdstate=stopped #不管当前什么情况,重启apache name=httpdstate=restarted #系统重启后,启动apache name=httpdenabled=yes 9) user/group模块:user模块,用于管理用户;group模块,用于管理group #ansibleall-muser-a"name=test01group=root" #添加一个test01用户,所属组为root #ansibleall-muser-a"name=test01state=absentremove=yes" #删除test01用户 #ansibleall-mgroup-a"name=testgrp01" #添加一个testgrp01的组 #ansibleall-mgroup-a"name=testgrp01state=absent" #删除组testgrp01 四、Playbooks剧本 playbooks是ansible更强大的配置管理组件,实现基于文本文件编排执行的多个任务,且多次重复执行。playbook组织格式为使用YAML语言来进行编写。 playbook是由一个或多个”play”组成的列表。play的主要功能在于将事先归为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓的task无非是调用ansible的一个module。将多个paly组织在一个playbook中,即可以让他们联通起来按事先编排的机制同唱一台大戏。 YAML是用来写配置文件的,接下来的配置文件都是以yaml为后缀。 1.先来一个playbook的例子: 在ansible主机上的/root/下创建httpd目录,将本机的httpd.conf文件拷贝该目录下,修改配置文件里的监听的端口为8081 #vimweb.yaml#注意:文件一般以yaml为后缀 -hosts:WebServers#运行指定任务的目标主机 remote_user:root#在远程主机上执行任务的用户 tasks:#任务列表 -name:installhttpdpackage#设置任务名称,非必要 yum:name=httpdstate=present#使用yum模块安装httpd -name:installconfigurefile copy:src=/root/httpd/httpd.confdest=/etc/httpd/conf/#使用copy模块 -name:starthttpdservice service:name=httpdstate=started#使用service模块,start服务 测试: ansible-playbook --check playbook:只检测可能会发生的改变,但不真正执行操作; ansible-playbook playbook:直接执行 ansible-playbook --list-hosts:列出运行任务的主机; [root@wlmhttpd]#ansible-playbook--checkweb.yaml PLAY[WebServers]************************************************************** TASK[setup]******************************************************************* ok:[10.10.10.3] ok:[10.10.10.11] TASK[installhttpdpackage]*************************************************** ok:[10.10.10.3] ok:[10.10.10.11] TASK[installconfigurefile]************************************************** changed:[10.10.10.11] ok:[10.10.10.3] TASK[starthttpdservice]***************************************************** ok:[10.10.10.3] ok:[10.10.10.11] PLAYRECAP********************************************************************* 10.10.10.11:ok=4changed=1unreachable=0failed=0 10.10.10.3:ok=4changed=0unreachable=0failed=0 [root@wlmhttpd]#ansible-playbookweb.yaml PLAY[WebServers]************************************************************** TASK[setup]******************************************************************* ok:[10.10.10.3] ok:[10.10.10.11] TASK[installhttpdpackage]*************************************************** ok:[10.10.10.3] ok:[10.10.10.11] TASK[installconfigurefile]************************************************** ok:[10.10.10.3] ok:[10.10.10.11] TASK[starthttpdservice]***************************************************** changed:[10.10.10.11] changed:[10.10.10.3] PLAYRECAP********************************************************************* 10.10.10.11:ok=4changed=1unreachable=0failed=0 10.10.10.3:ok=4changed=1unreachable=0failed=0 2.通过这个事例的使用,下面来概括一下介绍playbook playbook的基础组件: Hosts:运行指定任务的目标主机 remoute_user:在远程主机上执行任务的用户 sudo_user: task:任务列表 格式: (1)action:module arguments (2) module:arguments 注意:shell和command模块后面直接跟命令,而非key=valume类的参数列表 设置在特定条件下触发: (1)某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers; handlers: 任务,在特定条件下触发; 接收到其他任务的通知是被触发; (2)任务可以通过“tags”打标签,而后可在ansible-playbook命令上使用-t指定进行调用; 运行playbook的方式: (1)测试 ansible-playbook --check 只检测可能会发生的改变,但不真正执行操作; ansible-playbook --list-hosts 列出运行任务的主机; (2)运行 ansible-playbook 3.上面的脚本里,改变了配置文件之后会启动服务,但是不会重启服务,如果以后又改变配置文件,只有restart才会生效,那怎么实现了? 下面介绍handlers。 在特定条件下触发;接收到其他任务的通知时被触发。Tasks中的任务都是有状态的,changed或者ok。 在Ansible中,只在task的执行状态为changed的时候,才会执行该task调用的handler。Handlers 最佳的应用场景是用来重启服务,或者触发系统重启操作.除此以外很少用到了。我改了配置文件要重启吧。 某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers; handlers: 任务,在特定条件下触发; 接收到其他任务的通知是被触发; 事例脚本如下: -hosts:WebServers remote_user:root tasks: -name:installhttpdpackage yum:name=httpdstate=present -name:installconfigurefile copy:src=/root/httpd/httpd.confdest=/etc/httpd/conf/ notify:restarthttpd#加notify标签,如果copy的执行结果为change,就会触发下面handlers里name:restarthttpd的操作 -name:starthttpdservice service:name=httpdstate=started handlers: -name:restarthttpd#这里的名称和notify是一致的 service:name=httpdstate=restarted#restarthttpd服务 测试(配置文件没有变动): [root@wlmhttpd]#ansible-playbook--checkweb_handlers.yaml PLAY[WebServers]************************************************************** TASK[setup]******************************************************************* ok:[10.10.10.3] ok:[10.10.10.11] TASK[installhttpdpackage]*************************************************** ok:[10.10.10.3] ok:[10.10.10.11] TASK[installconfigurefile]************************************************** ok:[10.10.10.11] ok:[10.10.10.3] TASK[starthttpdservice]***************************************************** ok:[10.10.10.3] ok:[10.10.10.11] PLAYRECAP********************************************************************* 10.10.10.11:ok=4changed=0unreachable=0failed=0 10.10.10.3:ok=4changed=0unreachable=0failed=0 执行: [root@wlmhttpd]#ansible-playbookweb_handlers.yaml PLAY[WebServers]************************************************************** TASK[setup]******************************************************************* ok:[10.10.10.3] ok:[10.10.10.11] TASK[installhttpdpackage]*************************************************** ok:[10.10.10.11] ok:[10.10.10.3] TASK[installconfigurefile]************************************************** ok:[10.10.10.3] ok:[10.10.10.11] TASK[starthttpdservice]***************************************************** ok:[10.10.10.11] ok:[10.10.10.3] PLAYRECAP********************************************************************* 10.10.10.11:ok=4changed=0unreachable=0failed=0 10.10.10.3:ok=4changed=0unreachable=0failed=0 修改了被管理主机上10.10.10.3上的配置文件后再执行: [root@wlmhttpd]#ansible-playbookweb_handlers.yaml PLAY[WebServers]************************************************************** TASK[setup]******************************************************************* ok:[10.10.10.11] ok:[10.10.10.3] TASK[installhttpdpackage]*************************************************** ok:[10.10.10.11] ok:[10.10.10.3] TASK[installconfigurefile]************************************************** ok:[10.10.10.11] changed:[10.10.10.3] TASK[starthttpdservice]***************************************************** ok:[10.10.10.11] ok:[10.10.10.3] RUNNINGHANDLER[restarthttpd]************************************************ changed:[10.10.10.3] PLAYRECAP********************************************************************* 10.10.10.11:ok=4changed=0unreachable=0failed=0 10.10.10.3:ok=5changed=2unreachable=0failed=0 4.指定执行哪些name内的操作,添加tags标签 任务可以通过“tags”打标签,而后可在ansible-playbook命令上使用-t指定进行调用; 在上一个脚本的基础上,添加tags标签操作,样例脚本如下: -hosts:WebServers remote_user:root tasks: -name:installhttpdpackage yum:name=httpdstate=present tags:insthttpd#添加tags标签,名称为insthttpd -name:installconfigurefile copy:src=/root/httpd/httpd.confdest=/etc/httpd/conf/ notify:restarthttpd tags:instconf#添加tags标签,名称为instconf -name:starthttpdservice service:name=httpdstate=started tags:starthttpd#添加tags标签,名称为starthttpd handlers: -name:restarthttpd service:name=httpdstate=restarted 执行: 在ansible-playbook命令上使用-t指定进行调用 [root@wlmhttpd]#ansible-playbook-tstarthttpdweb_handlers.yaml PLAY[WebServers]************************************************************** TASK[setup]******************************************************************* ok:[10.10.10.3] ok:[10.10.10.11] TASK[starthttpdservice]***************************************************** ok:[10.10.10.11] ok:[10.10.10.3] #只执行了starthttpdservice PLAYRECAP********************************************************************* 10.10.10.11:ok=2changed=0unreachable=0failed=0 10.10.10.3:ok=2changed=0unreachable=0failed=0 [root@wlmhttpd]#ansible-playbook-tinstconfweb_handlers.yaml PLAY[WebServers]************************************************************** TASK[setup]******************************************************************* ok:[10.10.10.11] ok:[10.10.10.3] TASK[installconfigurefile]************************************************** ok:[10.10.10.11] ok:[10.10.10.3] #值执行了installconfigurefile PLAYRECAP********************************************************************* 10.10.10.11:ok=2changed=0unreachable=0failed=0 10.10.10.3:ok=2changed=0unreachable=0failed=0 5.在playbook中使用变量 1)主机的系统变量(facts) ansible会通过module setup来收集主机的系统信息,这些收集到的系统信息叫做facts,这些facts信息可以直接以变量的形式使用。 哪些facts变量可以引用呢?在命令行上通过调用setup module命令可以查看 $ansibleall-msetup-uroot 怎样在playbook中使用facts变量呢,答案是直接使用: --- -hosts:all user:root tasks: -name:echosystem shell:echo{{ansible_os_family}} -nameinstallntponDebianlinux apt:name=gitstate=installed when:ansible_os_family=="Debian" -nameinstallntponredhatlinux yum:name=gitstate=present when:ansible_os_family=="RedHat" 2)ansible-playbook命令行中的自定义变量; -e VARS, --extra-vars=VARS 使用事例: vimname.yaml -hosts:WebServers remote_user:root vars: -pkgname:memcached#在playbook内部定义变量,变量名称为pkgname,值为memcached tasks: -name:installapackage yum:name={{pkgname}}state=present#使用name={{pkgname}}调用变量的值 测试: [root@wlm~]#ansible-playbook--syntax-checkname.yaml#语法检测 playbook:name.yaml [root@wlm~]#ansible-playbook--checkname.yaml#测试使用 PLAY[WebServers]************************************************************** TASK[setup]******************************************************************* ok:[10.10.10.11] ok:[10.10.10.3] TASK[installapackage]******************************************************* changed:[10.10.10.11] changed:[10.10.10.3] PLAYRECAP********************************************************************* 10.10.10.11:ok=2changed=1unreachable=0failed=0 10.10.10.3:ok=2changed=1unreachable=0failed=0 手动指定变量(-e VARS):在执行脚本时,指定变量的值 [root@wlm~]#ansible-playbook-epkgname=httpd--checkname.yaml PLAY[WebServers]************************************************************** TASK[setup]******************************************************************* ok:[10.10.10.11] ok:[10.10.10.3] TASK[installapackage]******************************************************* changed:[10.10.10.11] changed:[10.10.10.3] PLAYRECAP********************************************************************* 10.10.10.11:ok=2changed=1unreachable=0failed=0 10.10.10.3:ok=2changed=1unreachable=0failed=0 [root@wlm~]#ansible-playbook-epkgname=httpdname.yaml PLAY[WebServers]************************************************************** TASK[setup]******************************************************************* ok:[10.10.10.11] ok:[10.10.10.3] TASK[installapackage]******************************************************* 3) 通过roles传递变量; 4) Host Inventory 在/etc/ansible/hosts 文件里面编写 (a)向不同的主机传递不同的变量; IP/HOSTNAME varalable=value var2=value2 (b)向组中的主机传递相同的变量; [groupname:vars] variable=value invertory参数: 用于定义ansible远程连接目标主机是使用的参数,而非传递给playbook的变量; ansible_ssh_host ansible_ssh_port ansible_ssh_user ansible_ssh_pass ansible_sudo_pass

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册