更新时间:2024-10-16 GMT+08:00

开发部署类

一个ECS实例可以部署多少个QingTian Enclave?

QingTian Enclave支持为每个ECS实例创建最多2个Enclave虚拟机。

什么是Vsock?我该如何使用Vsock与QingTian Enclave进行通信?

Vsock是一种套接字接口,由上下文 ID (CID) 和端口号定义,上下文ID与TCP/IP连接中的IP地址相同。

Vsock使用标准、定义明确的POSIX套接字API(例如连接、侦听、接受)与QingTian Enclave进行通信。您可以开发基于vsock与QingTia Enclave通信的程序,详细操作请参考Linux系统上QingTian Enclave应用的开发。另外应用程序也可以借助代理,通过vsock发送HTTP请求。

为什么使用kc2实例启动QingTian Enclave后,出现Vsock性能下降?

对于kc2实例,如果使用隔离的全部CPU启动QingTian Enclave,会导致Vsock性能下降。

建议您在启动隔离服务时,比预期QingTian Enclave使用的CPU数量,多隔离2个CPU。这样可以使被隔离服务的一部分CPU用于启动QingTian Enclave,一部分CPU用于Vsock转发,避免出现Vsock性能下降。

  1. 执行以下命令,修改qt-enclave-env服务的配置文件/etc/qingtian/enclave/qt-enclave-env.conf。

    vim /etc/qingtian/enclave/qt-enclave-env.conf

    • 方式一:修改cpu_count数量为QingTian Enclave的CPU数量加2。
    • 方式二:修改cpu_list中的CPU数量为QingTian Enclave的CPU数量加2。
  2. 执行以下命令,重启qt-enclave-env服务。

    systemctl restart qt-enclave-env

  3. 执行以下命令,重启QingTian Enclave。

    qt enclave start --cpus ${isolated_cpus_count-2} --mem ${wanted_mem} --eif ${eif_file_location} --cid ${wanted_cid}

    其中:

    • isolated_cpus_count-2:隔离出来的CPU数量减少2
    • wanted_mem:期望内存大小
    • eif_file_location:eif文件位置
    • wanted_cid:期望cid值

    重启QingTian Enclave后观察vsock性能。

ECS实例开启SELinux后,为什么启动qt-enclave-env服务会失败?

问题现象:ECS实例开启SELinux后,启动qt-enclave-env服务失败,查看qt-enclave-env服务日志,失败的日志显示“insmod virtio-qtbox.ko Permission denied”。

问题原因:SELinux通过强制访问控制、细粒度的访问控制、策略强制、类型强制、安全上下文和审计功能等特性,提供了强大的安全机制,可以帮助保护Linux 系统免受恶意攻击和数据泄露的威胁。因此,qt-enclave-env服务中无法直接调用insmod virtio-qtbox.ko命令插入内核模块。

解决方案:请您通过手动执行命令insmod /opt/qingtian/enclave/virtio-qtbox.ko,或者关闭SELinux特性,并重启qt-enclave-env服务规避该问题。