2019-06-03 18:20:46 qq_36299025 阅读数 210

首先需要登录,并查看ip:ifconfig
去到根目录: ls /
列表显示路径:ls -l
根目录下,会有一堆的一级目录:
在这里插入图片描述
linux中的etc就相当于是Windows下的控制面板,Windows配置网络需要到控制面板,而linux需要到etc目录下:

cd   /etc/sysconfig/network-scripts/

使用vi打开该目录下的配置文件ifcfg-eth0
在这里插入图片描述注释掉HWADDR和UUID(实验环境这么搞,公司不行!!!),ONBOOT改成yes,BOOTPROTO自动获取改成static手动输入。设置ip需要问VMware,点击【编辑】——>【虚拟网络编辑器】,选中NAT模式,并点击NAT设置:
在这里插入图片描述
地址(挑一个不重复)、掩码、网关、DNS:
在这里插入图片描述保存,并退出!(不熟悉的可以点此查看)
为了使配置生效,需要重启服务:

service network restart

同时,还得关闭防火墙,并确保VMware NAT Service是正在运行:

service iptables stop

查看linux所有的开机运行的服务,这里关心的是iptables的3是off:

chkconfig	

在这里插入图片描述设置防火墙开机不自启:

chkconfig iptables off

禁用特殊的安全模式:

cd  /etc/selinux/

在这里插入图片描述在这里插入图片描述

为了防止mac地址胡乱映射,需要删除:

rm  -f   /etc/udev/rules.d/70-persistent-net.rules

最后poweroff,并拍摄快照。

2019-09-18 21:37:27 qq_42417262 阅读数 37

OpenStack控制节点安装
一.vmware workstation设置
1.打开 虚拟网络编辑器
在这里插入图片描述
完成上述操作之后打开NAT设置进行下图操作
在这里插入图片描述
然后
点击DNS设置,操作如下图:

在这里插入图片描述
然后
操作vmnet1
在这里插入图片描述
完成上图操作
新建vmnet3,完成下图操作
在这里插入图片描述
2.新建虚拟机
采用经典安装方式
在这里插入图片描述
在这里插入图片描述
完成上两图操作
进入centos安装,等到需要时输入 1 2 q yes
安装完成后,找到下图,但是我这是完全配置好后的东西
在这里插入图片描述
首先16777那个:
在这里插入图片描述
5033:
在这里插入图片描述
3355:
在这里插入图片描述
上面东西做完之后:
在这里插入图片描述
执行上述命令行,其中vim 的命令全是修改onboot=no 把no修改为yes
检查是否可以上网

至此,控制节点的linux的基本配置完成

2019-02-28 13:50:48 qq_43200387 阅读数 190

一部分驱动要和上层通信,就需要生成设备节点,上层应用通过一套标准的接口函数调用设备节点就可以控制底层以及和底层通信。Linux中设备节点是通过“mknod”命令来创建的。一个设备节点其实就是一个文件,Linux中称为设备文件。在Linux中,所有的设备访问都是通过文件的方式,一般的数据文件称为普通文件,设备节点称为设备文件。

为什么会引入杂项设备?
第一、节省主设备号
如果所有的驱动都是用字符设备,那么所有的设备号很快就用完了,总共就255个主设备号。
第二、驱动写起来相对简单
如果直接使用封装好的杂项设备,那么就可以减少一步注册主设备号的过程

在Ubuntu 系统上,如下图所示,使用命令“cat /proc/misc”,可以查看到 PC机 Ubuntu 系统的杂项设备。启动开发板,在超级终端中输入命令“cat /proc/misc”也可以查看对应的杂项设备。
杂项设备的主设备号是 10,在任何 Linux 系统中它都是固定的。一般将 Linux 驱动分为字符设备、块设备、网络设备,但是这个分类不能包含所有的设备,所以将无法归类的设备统称为杂项设备,杂项设备可能用到字符设备、快设备、网络设备中的一项或者多项设备。
杂项设备的头文件在“include/linux/miscdevice.h,如下图所示,在源码目录下使用命令“vim include/linux/miscdevice.h”查看。

extern int misc_register(struct miscdevice * misc);
杂项设备注册函数;一般在 probe 中调用,参数是 miscdevice
extern int misc_deregister(struct miscdevice *misc);
杂项设备卸载函数;一般是在 remove 中用于卸载驱动。

结构体 miscdevice 中参数很多,下面几个是常用的。
int .minor;设备号,赋值为 MISC_DYNAMIC_MINOR,这个宏定义可以查到为 10
const char *name;设备名称

file_operations 结构体的成员函数属于驱动设计的主体内容,里面的函数和 Linux 系统给应用程序提供系统接口一一对应。
file_operations 结构体在头文件“include/linux/fs.h”中,使用命令“vim include/linux/fs.h”打开头文件。

file_operations结构体中包含的参数非常多。
struct module *owner;一般是 THIS_MODULE。
int (*open) (struct inode *, struct file *);对应上层的 open 函数,打开文件。
int (*release) (struct inode *, struct file *);对应上层的 close 函数,打开文件操作之后一般需要关闭。
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);读函数,上层应用从底层读取函数。
ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);写函数,上层应用向底层传输数据。
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);这个函数功能和写函数稍微有点重合,但是这个函数占用的内存非常小,主要针对 IO 口的控制。

注册杂项设备
将头文件“linux/platform_device.h”、“linux/miscdevice.h”以及
“linux/fs.h”添加到文件中。然后定义一个DEVICE_NAME,将其赋值,这个设备节点名称和前面介绍的注册设备名称是不同的。
向添加 hello_probe 中添加注册杂项设备的函数 misc_register,将 miscdevice 参数定义为 hello_dev。

定义 miscdevice hello_dev结构体。
参数 minor 为 MISC_DYNAMIC_MINOR,也就是 10
参数 name 为 DEVICE_NAME
参数 fops 为“**_ops”

定义file_operations结构体,其中有四个参数。
参数 owner 为 THIS_MODULE,
参数 open,
参数 release ,
参数 unlocked_ioctl

对 **_ops 结构体中的函数进行定义,包括ioctl函数、release函数、open函数。

编写Makefile文件,生成模块文件,将其拷贝到开发板中,使用“insmod”命令加载驱动文件,使用“ls /dev”命令,可以看到新生成的设备节点。使用“rmmod”命令卸载驱动,使用“ls /dev”命令,发现设备节点已经去掉。

设备节点和驱动名以及设备名没有统一关系,不过最好设备节点的命名便于识别。

2018-05-07 11:35:43 qq_21921243 阅读数 227
  • 现象:sudo apt-get update结果卡在0%[working]
问题原因:apt-get The method driver /usr/lib/apt/methods/http could not be found

解决办法:sudo apt-get install apt-transport-https
  • /opt/stack/devstack/files/etcd-v3.1.7-linux-amd64.tar.gz: FAILED
问题原因: 由于网络原因下载超时导致

问题解决:

$ cd files/

$ wget -c https://github.com/coreos/etcd/releases/download/v3.1.10/etcd-v3.1.10-linux-amd64.tar.gz
$ wget -c  https://github.com/coreos/etcd/releases/download/v3.1.7/etcd-v3.1.7-linux-amd64.tar.gz
  • 解决安装devstack时从github下载代码速度过慢
问题原因:默认的github下载地址访问速度慢

问题解决:

$ stackrc 文件中找到GIT_BASE=${GIT_BASE:-git://git.openstack.org} 将这一行的源地址改为https://github.com
  • 安装devstack时pip安装插件速度慢
问题原因:默认的pip下载地址访问速度慢

问题解决:

找到pip.conf文件,没有的话在根目录下创建.pip目录,创建pip.conf,并写入
$ sudo find -name pip.conf

修改该文件:
[global]

index-url = http://pypi.douban.com/simple

trusted-host=pypi.douban.com
  • horizon版本与tacker-horizon版本不匹配
问题描述:
2018-04-14 02:48:12.395 | ContextualVersionConflict: (horizon 12.0.3.dev45 (/opt/stack/horizon), Requirement.parse('horizon>=13.0.0'), set(['tacker-horizon']))
2018-04-14 02:48:12.509 | Error on exit

问题原因:openstack tacker devstack的bug,在stable/pike版本的devstack中配置文件要求下载master版的tacker-horizon。导致版本不匹配。

问题解决:
以复制一份tacker项目源码暂时替换,具体就是将原先local.conf配置文件中tacker项目的下载地址改为:enable_plugin tacker https://gitee.com/SINET_gangliu/tacker stable/pike
  • pip 安装软件出错
问题描述:
installed pip version 1 does not meet minimum requirements
[ERROR] /opt/stack/devstack/inc/python:146 Currently installed pip version 1 does not meet minimum requirements (>=6).

问题原因:
The code in '/opt/stack/devstack/inc/python' line 142 to 148

local pip_version
    pip_version=$(python -c "import pip; \
                        print(pip.__version__.strip('.')[0])")
    if (( pip_version<6 )); then
        die $LINENO "Currently installed pip version ${pip_version} does not" \
            "meet minimum requirements (>=6)."
    fi

When the pip version >10, the resule of 'pip.__version__.strip('.')[0]' is 1, then the error happen.

问题解决:
修改/opt/stack/devstack/inc/python文件,替换上述代码为:
local pip_version
    pip_version=$(python -c "import pip; \
                        print(pip.__version__.split('.')[0])")
    if (( pip_version<6 )); then
        die $LINENO "Currently installed pip version ${pip_version} does not" \
            "meet minimum requirements (>=6)."
    fi
  • glance-api无法启动
2018-04-14 04:55:07.876 | /opt/stack/devstack/lib/glance:355:die
2018-04-14 04:55:07.878 | [ERROR] /opt/stack/devstack/lib/glance:355 g-api did not start

问题原因:
oslo.utils 依赖库版本不正确

问题解决:

参考依赖库版本冲突问题解决方法,并删除/opt/stack/目录下的glance文件夹
  • 依赖库版本冲突
问题描述:
2018-04-13 14:57:39.584 |    raise VersionConflict(dist, req).with_context(dependent_req)
2018-04-13 14:57:39.584 | ContextualVersionConflict: (oslo.utils 3.28.2 (/usr/local/lib/python2.7/dist-packages), Requirement.parse('oslo.utils>=3.33.0'), set(['python-barbicanclient']))

问题原因:
2018-04-15 09:56:51.916 | python-barbicanclient 4.6.1.dev8 has requirement keystoneauth1>=3.4.0, but you'll have keystoneauth1 3.1.0 which is incompatible.
2018-04-15 09:56:51.917 | python-barbicanclient 4.6.1.dev8 has requirement oslo.utils>=3.33.0, but you'll have oslo-utils 3.28.2 which is incompatible.
所有依赖库的版本信息都写在 /opt/stack/requirements/upper-constraints.txt文件中

问题解决:

修改 /opt/stack/requirements/upper-constraints.txt文件相应依赖库的版本
$ sudo vim  /opt/stack/requirements/upper-constraints.txt
  • 数据库连接出错
问题描述:
2018-04-16 01:52:24.730 | mysqladmin: connect to server at '127.0.0.1' failed
2018-04-16 01:52:24.730 | error: 'Access denied for user 'root'@'localhost' (using password: YES)'
2018-04-16 01:52:24.733 | +lib/databases/mysql:configure_database_mysql:91  true
2018-04-16 01:52:24.736 | +lib/databases/mysql:configure_database_mysql:94  sudo mysql -uroot -proot -h127.0.0.1 -e 'GRANT ALL PRIVILEGES ON *.* TO '\''root'\''@'\''%'\'' identified by '\''root'\'';'
2018-04-16 01:52:24.740 | mysql: [Warning] Using a password on the command line interface can be insecure.
2018-04-16 01:52:24.741 | ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)


问题原因:
数据库mysql没有初始化root密码,或者初始化root密码不成功;

问题解决:

重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:

#vim /etc/my.cnf

在文档内搜索mysqld定位到[mysqld]文本段:
/mysqld(在vim编辑状态下直接输入该命令可搜索文本内容)

在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,如下图所示:

保存文档并退出:

#:wq
2.接下来我们需要重启MySQL:

/etc/init.d/mysql restart(有些用户可能需要使用/etc/init.d/mysqld restart)


3.重启之后输入#mysql即可进入mysql。


4.接下来就是用sql来修改root的密码

mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("密码") where user='root';
mysql> flush privileges;
mysql> quit

到这里root账户就已经重置成新的密码了。

5.编辑my.cnf,去掉刚才添加的内容,然后重启MySQL。

具体参考:https://www.cnblogs.com/gumuzi/p/5711495.html

  • tacker-horizon 安装不正确
问题描述:
LIBS_FROM_GIT=tacker-horizon
2017-11-22 03:55:05.900943 | controller | 2017-11-22 03:55:05.900 | + ./stack.sh:main:1392 : check_libs_from_git
2017-11-22 03:55:05.903078 | controller | 2017-11-22 03:55:05.902 | + inc/python:check_libs_from_git:428 : local lib=
2017-11-22 03:55:05.905486 | controller | 2017-11-22 03:55:05.905 | + inc/python:check_libs_from_git:429 : local not_installed=
2017-11-22 03:55:05.908513 | controller | 2017-11-22 03:55:05.908 | ++ inc/python:check_libs_from_git:430 : echo tacker-horizon
2017-11-22 03:55:05.910092 | controller | 2017-11-22 03:55:05.909 | ++ inc/python:check_libs_from_git:430 : tr , ' '
2017-11-22 03:55:05.914380 | controller | 2017-11-22 03:55:05.914 | + inc/python:check_libs_from_git:430 : for lib in '$(echo ${LIBS_FROM_GIT} | tr "," " ")'
2017-11-22 03:55:05.916037 | controller | 2017-11-22 03:55:05.915 | + inc/python:check_libs_from_git:431 : lib_installed_from_git tacker-horizon
2017-11-22 03:55:05.917672 | controller | 2017-11-22 03:55:05.917 | + inc/python:lib_installed_from_git:408 : local name=tacker-horizon
2017-11-22 03:55:05.920222 | controller | 2017-11-22 03:55:05.920 | ++ inc/python:lib_installed_from_git:422 : pip list --format=columns
2017-11-22 03:55:05.920932 | controller | 2017-11-22 03:55:05.920 | ++ inc/python:lib_installed_from_git:422 : awk '/^tacker-horizon/ {print $3}'
2017-11-22 03:55:06.878737 | controller | 2017-11-22 03:55:06.878 | + inc/python:lib_installed_from_git:422 : [[ -z /opt/stack/tacker-horizon ]]
2017-11-22 03:55:06.881615 | controller | 2017-11-22 03:55:06.881 | + inc/python:check_libs_from_git:432 : not_installed+=' tacker-horizon'
2017-11-22 03:55:06.883984 | controller | 2017-11-22 03:55:06.883 | + inc/python:check_libs_from_git:436 : [[ -n tacker-horizon ]]
2017-11-22 03:55:06.886448 | controller | 2017-11-22 03:55:06.886 | + inc/python:check_libs_from_git:437 : die 437 'The following LIBS_FROM_GIT were not installed correct: tacker-horizon'
2017-11-22 03:55:06.888968 | controller | 2017-11-22 03:55:06.888 | + functions-common:die:187 : local exitcode=0
2017-11-22 03:55:06.891649 | controller | 2017-11-22 03:55:06.891 | [Call Trace]
2017-11-22 03:55:06.891713 | controller | 2017-11-22 03:55:06.891 | ./stack.sh:1392:check_libs_from_git
2017-11-22 03:55:06.891752 | controller | 2017-11-22 03:55:06.891 | /opt/stack/devstack/inc/python:437:die
2017-11-22 03:55:06.896141 | controller | 2017-11-22 03:55:06.895 | [ERROR] /opt/stack/devstack/inc/python:437 The following LIBS_FROM_GIT were not installed correct: tacker-horizon
2017-11-22 03:55:07.902368 | controller | 2017-11-22 03:55:07.902 | Error on exit


问题原因:
tacker项目配置文件bug,Remove tacker horizon from lib installation


问题解决:

修改/opt/stack/tacker//devstack/settings 文件,下面展示的文件修改前后对比:

修改前:
24        enable_service tacker    
25        # enable tacker-conductor will make systemctl enable conductor service    
26        enable_service tacker-conductor    
27        # tacker-horizon isn't installable from pip        
28        LIBS_FROM_GIT=tacker-horizon        
29           
30        MGMT_PHYS_NET=${MGMT_PHYS_NET:-mgmtphysnet0}    
31        BR_MGMT=${BR_MGMT:-br-mgmt0}    

修改后:
24        enable_service tacker
25        # enable tacker-conductor will make systemctl enable conductor service
26        enable_service tacker-conductor
27 
28
30        MGMT_PHYS_NET=${MGMT_PHYS_NET:-mgmtphysnet0}
31        BR_MGMT=${BR_MGMT:-br-mgmt0}
2016-12-12 16:39:22 kinglyjn 阅读数 307

需求:

  • 实现nimbus机脚本控制supervisor节点机的开、关、查看

实现思路:

  1. 实现集群各节点间的网络通信和域名解析
  2. 建立各节点间的互信机制
  3. 脚本控制

具体细节:

  1. 实现集群各节点间的网络通信和域名解析(网络配置&bind9)
  2. 建立各节点间的互信机制(linux无秘钥登录技术)
    服务器:
    A 控制节点(即nimbus机)
    B 被控制节点
    C 被控制节点
  3. 脚本控制

准备:

#编写supervisors.txt配置文件供脚本扫描使用
supervisor01
supervisor02
supervisor03
...
supervisor51

batch_scp.sh
主体控制脚本

#!/bin/bash
#
# create by zhangqingli
# date 2016/9/23DI
#
# 批量分发 supervisor_shutcls.sh 脚本
#
USER=ubuntu
LOCAL_DIR=/home/ubuntu/supervisor_manager/shell.bak/supervisor_shutcls.sh
SCP_DIR=/home/ubuntu/supervisor_shutcls.sh

while read line
do 
  scp $LOCAL_DIR $USER@$line:$SCP_DIR
  ssh -n $USER@$line chmod +x $SCP_DIR
done < supervisors.txt

batch_shutcls.sh
和被控节点的supervisor_shutcls.sh配合使用,先执行batch_scp.sh将主控节点的supervisor_shutcls.sh文件分发到各被控节点

#!/bin/bash
#
# create by zhangqingli
# date 2016/9/23DI
#
# 批量关闭supervisor服务
#

USER=ubuntu
CMD="/home/ubuntu/supervisor_shutcls.sh"

while read line
do
  ssh -n $USER@$line $CMD
done < supervisors.txt

supervisor_shutcls.sh
文件被分发存放在各被控节点

#!/bin/bash
#
# create by kinglyjn
# date 2016/9/23DI
#
# 关闭supervisor服务,清除supervisor之前的运行文件
#

STORM_LOCAL=/home/ubuntu/storm-local

ip=`ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | awk -F: '{print $2}'`
hostname=`hostname`
echo "========================================[$ip $hostname]========================================"

# 关闭supervisor服务器java进程
echo ">>killall -9 java"
killall -9 java

# 查看java进程状态
echo ">>ps -ef |grep java|grep -v grep"
ps -ef |grep java|grep -v grep

echo ">>mv storm_local/* to tmp"
cd $STORM_LOCAL
mv supervisor   /tmp/supervisor_$(date +%Y-%m-%d-%H-%M-%S)
mv workers      /tmp/workers_$(date +%Y-%m-%d-%H-%M-%S)
mv nohup.out    /tmp/nohup.out_$(date +%Y-%m-%d-%H-%M-%S)

echo ">>ls strom_local/*"
ls $STORM_LOCAL
echo -e "\n\n"

batch_startup.sh

#!/bin/bash
#
# create by zhangqingli
# date 2016/9/23DI
#
# 启动supervisor服务
#

USER=ubuntu
CMD="nohup storm supervisor >/dev/null 2>&1 &"

while read line
do
  echo ">>attempt to start $line ..."
  ssh -n $USER@$line $CMD
done < supervisors.txt

echo ">>done!"

batch_status.sh

#!/bin/bash
#
# create by zhangqingli
# date 2016/9/23DI
#
# 查看supervisor服务进程 和 服务器端口进程
#

USER=ubuntu
CMD1="jps -m"
CMD2="sudo netstat -lntp"

while read line
do 
  ip=`ssh -n $USER@$line "ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | awk -F: '{print $2}'"`
  hostname=`ssh -n $USER@$line "hostname"`
  echo "========================================[$ip $hostname]========================================"
  ssh -n $USER@$line $CMD1
  echo $line
  ssh -n $USER@$line $CMD2
  echo $line
  echo -e "\n"

done < supervisors.txt

linux Web控制台

阅读数 3280

生成设备节点

阅读数 606

没有更多推荐了,返回首页